2011-03-19 14 views
14

Estoy tratando de establecer el fondo de la celda de mi UITableViewCells, pero estoy luchando con el color de fondo de UIAccessoryView. No cambiaFondo de celda y accesorio

¿Alguien me puede ayudar a hacer transparente el color de fondo de UIAccessoryView (o en realidad cualquier otro color)?

Este es mi código

cell.textLabel.backgroundColor = [UIColor clearColor]; 
cell.accessoryView.backgroundColor = [UIColor clearColor]; 
cell.detailTextLabel.backgroundColor = [UIColor clearColor]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

if(indexPath.row % 2) { 
    cell.contentView.backgroundColor = [UIColor clearColor]; 
} 
else { 
    cell.contentView.backgroundColor = [UIColor redColor]; 
} 

Aquí es una imagen que ilustra el tema

UIAccessoryView does not change background color.

Respuesta

46

Tendrá que establecer la propiedad backgroundView del UITableViewCell. Por ejemplo:

UIView* myBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; 
myBackgroundView.backgroundColor = [UIColor redColor]; 
myCell.backgroundView = myBackgroundView; 

Si quieres algo más sofisticado, como un fondo degradado de color rojo, que sería implementar una subclase de UIView que dibuja un gradiente en drawRect:, y utilizarlo como el backgroundView.

También puede establecer la propiedad selectedBackgroundView si desea una apariencia personalizada para una celda de la tabla seleccionada.

+0

¡Impresionante! Eso funciona y es mucho más fácil! Buena idea con degradado y un 'selectedBackgroundView' ¡Muchas gracias! – simonbs

+0

Muchas gracias ... Me quedé atrapado durante mucho tiempo aquí y tu respuesta fue la primera en resolverlo. :) –

+0

+1 por buena respuesta, muchas gracias. – Shivaay

4

En función

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

Uso siguiente código

cell.contentView.superview.backgroundColor = [UIColor redColor]; 

reference for more details

+1

funciona bien, gracias por el enfoque de una sola línea :-) – PetrV

+1

gracias hombre +1 –

0

Si desea cambiarlo en clase personalizada de UITableViewCell sólo puede utilizar:

override func layoutSubviews() { 
    super.layoutSubviews() 
    self.backgroundColor = UIColor.whiteColor() 
} 

cambiando el fondo dentro de awakeFromNib() o init?(coder aDecoder: NSCoder) no funciona!

Cuestiones relacionadas