uitableviewcontroller uitableviewcell custom ios swift uitableview swift3

ios - uitableviewcell - uitableview swift 4 programmatically



¿Cómo hago que este UITableView sea claro(transparente) en Swift 3? (8)

¿Cómo puedo hacer que esta UITableView y sus celdas sean claras en Swift 3?

He revisado los hilos anteriores pero sigo obteniendo un fondo blanco.

Como puede ver en mi código, he intentado los diversos métodos mencionados:

override func viewDidLoad() { self.communitiesTableView.delegate = self self.communitiesTableView.dataSource = self let background = CAGradientLayer().bespokeColor() background.frame = self.view.bounds // view.addSubview(background) super.viewDidLoad() // Do any additional setup after loading the view. }

y en mi función de mesa de celda:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let title = self.communities[indexPath.row] let cell = UITableViewCell() cell.textLabel?.text = title cell.textLabel?.font = UIFont(name: "Avenir", size: 12) cell.textLabel?.textColor = UIColor.red cell.textLabel?.backgroundColor = UIColor.clear cell.contentView.backgroundColor = UIColor.clear communitiesTableView.backgroundColor = UIColor.clear cell.layer.backgroundColor = UIColor.clear.cgColor return cell }

Este archivo .gif muestra el problema: observe que las líneas negras que muestran que la tabla está presente simplemente no están rellenas (ya que nadie ha iniciado sesión).

Pero por un segundo está claro, luego se vuelve blanco. ¿Dónde estoy equivocado?

Esto es de otra publicación que he encontrado:

El documento de Apple dice

... En iOS 7, las celdas tienen un fondo blanco por defecto; en versiones anteriores de iOS, las celdas heredan el color de fondo de la vista de tabla adjunta. Si desea cambiar el color de fondo de una celda, hágalo en el método tableView: willDisplayCell: forRowAtIndexPath: de su delegado de la vista de tabla.

Es posible que necesite utilizar el método de delegado de willDisplayCell UITableView para tener un fondo transparente para su vista de tabla.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cellforRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; }

¿Cómo aplico el código anterior como dice que es para iOS 7?


Asegúrese de que en el Inspector de identidad tenga Clase personalizada -> Clase "YourCustomClassCellName" seleccionada en el menú desplegable. Con su UITableViewCell seleccionado en Interface Builder, asegúrese de que su Identificador sea "YourCellName" y luego en el método func tableView (_ tableViewL UITableView, cellForRowAt) antes de la celda de retorno que tenga cell.backgroundColor = UIColor.clear, es decir,

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if let cell = tableView.dequeueReusableCell(withIdentifier: "YourCellName", for: indexPath) as? YourCellNameClass { cell.configureCell(parameter: ClassDataModel[indexPath.row]) cell.backgroundColor = UIColor.clear return cell } else { return UITableViewCell() }

Tuve el mismo problema y escribí todo el código antes de verificar para asegurarme de que mi CellClass estaba seleccionado y me quedé con la palma de la mano cuando pasé una hora preguntándome por qué funcionaba en otro viewController y no en este caso. Incluso si usa IB para borrar los fondos blancos predeterminados, igual debe escribir cell.backgroundColor = UIColor.clear. Yo estaba como sí, encontré otro error en 8.2.1, pero no solo un error del operador iD10t.


Debe borrar tanto la tabla como el fondo de la celda.

Dentro de la función tableView:

tableView.backgroundColor = .clear cell.backgroundColor = .clear tableView.tableFooterView = UIView()


Establecer esto no será suficiente ya que no ha aplicado clear color a la contentView de contentView de la vista de tableView por lo que se está tableView blanco. Pruebe esto en cellForRowAtIndexPath

cell.contentView.backgroundColor = UIColor .clearColor()


Para que esto funcione, debes implementar un nuevo método de vista de tabla:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { cell.backgroundColor = UIColor.clear }


Puedes intentar esto

en viewDidLoad : tableView.backgroundColor = UIColor.clear

en cellForRowA t: cell.contentView.backgroundColor = UIColor.clear

Es trabajo para mi


Tal vez, puedes verificar el alfa de tu vista de tabla.


Te falta configurar el color de fondo de contentView de la celda.

cell.contentView.backgroundColor = UIColor.clear


Nota: A continuación se probó el código en Swift 3 .

Método 1:

Seleccione su tablaViewCell de su storyboard y vaya a Attributes Inspector en View cambiar Background para clear

Método 2: prueba debajo del código dentro de tu cellForRowAt

cell.layer.backgroundColor = UIColor.clear.cgColor

Nota: Si el método anterior no funcionó, borre la compilación de su proyecto presionando shift + option + command + k

Actualización: Actualice su cellForRowAt desde el siguiente código ...

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath) cell.textLabel?.text = communities[indexPath.row] cell.textLabel?.font = UIFont(name: "Avenir", size: 12) cell.textLabel?.textColor = UIColor.red // set to any colour cell.layer.backgroundColor = UIColor.clear.cgColor return cell }