He implementado una clase de celda de vista de tabla personalizada que hereda de UITableViewCell
. La vista de tabla contiene una imagen de fondo, por lo que quiero que el fondo de la celda sea transparente. Se ve muy bien antes de iOS7.
Sin embargo, en iOS7, la celda siempre se muestra con un fondo blanco.
Incluso para Xcode7, 2015, hay un error en el guión gráfico : debe establecer el color de fondo de una celda en el código.
ios
objective-c
cocoa-touch
ios7
Kjuly
fuente
fuente
Respuestas:
Como dijo Apple DOC ( Referencia de clase UITableViewCell ):
Entonces, para mi caso, para mostrar celdas con fondo transparente, solo necesito implementar el método de delegado en el controlador de vista de tabla como se muestra a continuación:
Solo tenga en cuenta : como dijo @null, "... parece que hay un error en el generador de interfaces ..." , no estoy totalmente seguro de si tiene el error, pero parece que sí porque su comentario obtuvo varios votos. Entonces, puede haber algo mal si usa IB. :)
fuente
tableView:cellForRowAtIndexPath:
método.Lo investigué un poco y descubrí que el color de fondo de la celda lo establece el sistema Apariencia. Entonces, si todas las celdas de su aplicación tienen un fondo claro, la solución más fácil sería:
E incluso si tienen un fondo diferente, el color claro parece ser el más conveniente como el predeterminado.
fuente
UITableViewCell
correos electrónicos, por lo que no fue un problema para mí proporcionar una superclase con un inicializador para configurar el color de BGclearColor
, pero ¿adivina qué? Eso no funcionó ... Quiero decir, ¿POR QUÉ, APPLE?Escriba esto en su método cellForRowAtIndexPath antes de devolver la celda;
fuente
El color de fondo predeterminado de un
UITableViewCell
en iOS 7 es blanco.Debe establecer la
backgroundColor
propiedad en algún lugar de su código. Por ejemplo, configúrelo después de crear la celda.fuente
De hecho, descubrí que el problema surgía de que el color de fondo de UITableView no estaba configurado para borrar. Si cambia el color de fondo de UITableViewCell para borrarlo y todavía ve que es blanco, asegúrese de que el color de fondo de UITableView esté en claro (o lo que desee).
En veloz
fuente
Este es definitivamente un error de iOS. En iOS 8, configurar el color de fondo
Interface Builder
funciona bien para iPhone, pero en iPad siempre es asíwhiteColor
. Para solucionarlo, en elcellForIndexPath
mensaje de origen de datos, poner esto en:cell.backgroundColor = cell.backgroundColor
Y funcionará. Esta es exactamente la razón por la que dije que es un error ya que el código en sí mismo es bastante tonto, pero funciona.
fuente
Puede ser que su UITableViewCell esté seleccionado de forma predeterminada. Puede confirmar esto utilizando el nuevo depurador visual de Xcode 6 (o averiguar exactamente qué vista está causando que aparezca este glóbulo blanco).
Curiosamente, después de saber esto ... configurar el color de fondo de la celda seleccionada para borrar aún no funcionó ... investigar un poco más, resulta que solo tuve que modificar el estilo de selección cuando estoy creando esta celda personalizada:
fuente
Descubrí que ninguno de los anteriores funcionó desde XCode 5.1.1, iOS 7.1.
Si está utilizando Interface Builder con celdas prototipo, seleccione la celda prototipo, luego, desde el selector de atributos en la sección Ver, cambie el valor predeterminado del formulario Fondo a Borrar color:
Esto parece que funciona bien. Ninguno de los cambios de código anteriores son necesarios, esta es una solución pura de IB.
fuente
La respuesta aceptada no me solucionó el problema. Tuve que hacer esto:
Desde el método cellForRowAtIndexPath de la clase de fuente de datos de la tabla:
fuente
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
. En versiones anteriores, solta el argumento indexPath y luego prueba nil, creando instanciasinitWithStyle:reuseIdentifier
según su fragmento de código en el caso nil.Para mí establecer
cell.backgroundColor = cell.contentView.backgroundColor;
ya seatableView:willDisplayCell:forRowAtIndexPath:
otableView:cell:forRowAtIndexPath:
hizo el trabajo.Esto se debe a que configuré el color de fondo de contentView en Interface Builder como lo deseo.
fuente
Al agregar objetos de IU a una celda, Xcode 5 / IOS 7 agrega una nueva "Vista de contenido" que será la vista general de todos los elementos en la celda. Para establecer el color de fondo de la celda, establezca el color de fondo de esta Vista de contenido. Las soluciones anteriores no funcionaron para mí, pero esta funcionó bien para mí.
fuente
Solución Swift 1.2:
Simplemente agregue una definición explícita para el color de fondo de su celda de la siguiente manera:
fuente
Tuve un problema similar, tuve que
agregue esto al código para corregirlo
fuente
También puede usar un código de color para hacer que su celda UITableView sea lucrativa.
Este es el código para aplicar el método del código de color:
fuente