uitableviewcontroller uitableviewcell example ios uitableview

ios - uitableviewcell - UITableView fondo claro



uitableviewcell swift (21)

Me doy cuenta de que iOS 7 no se ha lanzado oficialmente y no deberíamos discutirlo PERO me estoy volviendo loco tratando de resolver este problema. En iOS 6, mi vista de tabla era transparente y se veía genial. La primera vez que ejecuta iOS 7, y el fondo es blanco.

He intentado hacer que la tabla backgroundColor, el color de la celda, etc., sea UIColor clearColor pero no tenga ningún cambio.

¿Cómo arreglar este problema?


Conjunto

tableView.backgroundColor = [UIColor clearColor];

en viewDidLoad.

si esto no funciona, intente:

tableView.backgroundView = nil;


En mi aplicación, tuve que configurar el backgroundColor en mi clase UITableViewCell para [UIColor clearColor] color cuando actualicé para iOS 7 .


En mi caso, la celda fue creada usando un xib. parece que el constructor de interfaz en xcode5 tiene problemas para establecer clearColor en el cell.backgroundColor.

Todo lo que tenía que hacer era, de hecho, establecer

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // get the cell from the nib //then force the backgroundColor cell.backgroundColor = [UIColor clearColor] return cell; }


En realidad, el lugar correcto oficialmente para cambiar el color de fondo de la celda es diferente según la documentación ( UITableViewCell Class Reference ):

Ya sea que use una celda predefinida o personalizada, puede cambiar el fondo de la celda usando la propiedad backgroundView o cambiando la propiedad heredada de backgroundColor. 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.


En veloz 3

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) cell.backgroundColor = .clear cell.backgroundView = UIView() cell.selectedBackgroundView = UIView() return cell }


Este es un problema bastante frustrante. Aquí está mi solución actual:

Agregue esto a su subclase UITableViewCell .

- (void)didMoveToSuperview { [super didMoveToSuperview]; self.backgroundColor = [UIColor clearColor]; }


Esto funcionó para mí en iOS7 +:

self.tableView.backgroundColor =[UIColor blueColor]; self.tableView.opaque = NO; self.tableView.backgroundView = nil;`

y luego en cellForRowAtIndexPath:

cell.backgroundColor = [UIColor clearColor];


Esto ha sido respondido, pero incorrectamente en muchos sentidos.

Debe implementar el siguiente método delegado:

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

No puede colocar la corrección en cellForRowAtIndexPath porque eso es después de que se represente la celda, y parpadeará un fondo blanco antes de que el fondo se configure para borrar (en dispositivos más lentos).

¡Usa este método delegado y tus problemas están resueltos!


Esto solo funcionó para mí cuando edité un color de fondo claro para cada celda y un color claro para la tabla en sí ... AMBOS PROGRAMÁTICAMENTE

para establecer el color claro para la tabla:

override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. initMenu() myTableView.backgroundColor = UIColor.clearColor() }

para establecer el color de las celdas:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath) cell.backgroundColor = UIColor.clearColor() return cell }


Intenta configurar backgroundView a nil primero.

[self.tableView setBackgroundView:nil]; [self.tableView setBackgroundColor:[UIColor clearColor]];

No estoy seguro si esto es un cambio en la documentación con iOS7 o si siempre ha estado allí y no ha afectado el color de fondo, pero de acuerdo con la referencia de clase de UITableView @property backgroundView

"Debe establecer esta propiedad en cero para establecer el color de fondo de la vista de tabla".

editar: sintaxis del código corregido


Primer set

tableView.backgroundColor = [UIColor clearColor];

Segundo set

tableCell.backgroundColor = [UIColor clearColor];


Simplemente seleccione Borrar color en Ver fondo para la tabla y también para la celda.


Tratar

[myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone]; [myTable setSeparatorInset:UIEdgeInsetsZero];

Y

cell.backgroundColor = [UIColor clearColor];


Una cosa agradable. El color predeterminado de UITable parece ser blanco (no sé por qué)

Pero mejor cambiar eso.


crear IB Outlet para la vista de tabla @IBOutlet weak var yourTable: UITableView!

en vista carga

override func viewDidLoad() { yourTable.delegate = self yourTable.dataSource = self yourTable.backgroundColor = UIColor.clearColor() }

si desea borrar el color de la celda también hacer esto en

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { cell.backgroundColor = UIColor.clearColor() }


prueba este fragmento de código

cell.contentView.backgroundColor = [UIColor clearColor]; cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];


rápido 3, 4

cell.backgroundColor = UIColor.clear


Pon esto:

cell.backgroundColor = [UIColor clearColor];

En esta sección:

cellForRowAtIndexPath


veloz 3

override func viewDidLoad() { super.viewDidLoad() tableView.backgroundColor = UIColor.clear }


// Fix for iOS 7 to clear backgroundColor cell.backgroundColor = [UIColor clearColor]; cell.backgroundView = [[UIView new] autorelease]; cell.selectedBackgroundView = [[UIView new] autorelease];

en cellForRowAtIndexPath

Además, asegúrese de que su tabla vista tenga fondo transparente (en el guión gráfico):


// Fix iOS 7 clear backgroundColor compatibility // I Think this two lines only are enough cell.backgroundColor = [UIColor clearColor]; cell.selectedBackgroundView = [[UIView new] autorelease];