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

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

He revisado los hilos anteriores pero todavía tengo un background blanco.

Como puede ver en mi código, he probado los diversos methods 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 la function de la tabla de mi 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.networking cell.textLabel?.backgroundColor = UIColor.clear cell.contentView.backgroundColor = UIColor.clear communitiesTableView.backgroundColor = UIColor.clear cell.layer.backgroundColor = UIColor.clear.cgColor return cell } 

Este gif muestra el problema: observe que las líneas negras que muestran que la tabla está presente no están pobladas (ya que nadie está conectado)

Pero por un segundo está claro, luego se vuelve blanco. Donde estoy yendo mal

Esto es de otra publicación que he encontrado:

Documento de Apple dice

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

Es posible que deba utilizar el método de delegado de DisplayDellPlace UITableView para tener un background transparente para la 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?

Nota: El código siguiente se ha probado en Swift 3 .

Método 1:

Seleccione su tableViewCell de su storyboard y vaya a Attributes Inspector en View cambio de Background para clear

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

  cell.layer.backgroundColor = UIColor.clear.cgColor 

introduzca la descripción de la imagen aquí

Nota: Si el método anterior no funcionó, intente borrar la construcción del proyecto presionando shift + option + command + k

Actualización: actualice su cellForRowAt desde el código siguiente …

 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.networking // set to any colour cell.layer.backgroundColor = UIColor.clear.cgColor return cell } 

Tienes que establecer el background de la tabla y la celda de forma clara.

Dentro de la function tableView:

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

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

cell.contentView.backgroundColor = UIColor.clear

Establecer estos no será suficiente, ya que no ha aplicado clear color a la contentView de contentView de tableView y, por lo tanto, se está coloreando en blanco. Prueba esto en cellForRowAtIndexPath

cell.contentView.backgroundColor = UIColor .clearColor()

Para que esto funcione, debe implementar un nuevo método tableview:

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

Asegúrese de que en el Inspector de identidad tenga Clase personalizada -> Clase "YourCustomClassCellName" seleccionada en el menu 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 tiene 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 verificarme para asegurarme de que mi CellClass se seleccionaba y tenía la cara marcada cuando pasé una hora preguntándome por qué funcionaba en otro viewController y no en esta instancia. Incluso si usa IB para borrar los backgrounds blancos pnetworkingeterminados, aún tiene que escribir cell.backgroundColor = UIColor.clear. Era como si, encontré otro error en 8.2.1, pero no solo un error de operador de iD10t.

Tal vez, puede verificar el alfa de su vista de tabla.