iphone uitableview accessoryview

iphone - Alterar el color de fondo de cell.accessoryView y cell.editingAccessoryView



uitableview (5)

@Zak, en primer lugar, gracias por comunicarme los detalles del diseño de la celda. ¡Muy útil!
Solo me gustaría señalar que el siguiente código:

self.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"cell_background.png"]];

trabajó para mi. El resultado fue una imagen de fondo que se extendía sobre toda la celda. ¡AccessoryTypeView no lo cubrió! La parte importante es colocar este código en el método layoutSubviews de su clase de celda personalizada y no en cellForRowAtIndexPath que se encuentra en la clase TableViewController. En mi caso, definí una clase CustomCell y dentro de ella definí etiquetas, vistas de imágenes, etc.

NOTA: El siguiente código no estaba funcionando:

cell.contentView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"cell_background.png"]];

cuando se coloca dentro de tableView: (UITableView *) tableView cellForRowAtIndexPat método. Me estaba dando el fondo que cubría el celular, pero AccessoryTypeView estaba arriba ...

¿Cada vez que agrego un accesorioView a mi UITableViewCell, no se aplica el color de fondo? Estoy configurando un UISwitch como mi accesorio de vista, y el color que he establecido en la propiedad cell.backgroundColor solo afecta a la vista de contenido y no a la vista de accesorio. He intentado todo para establecerlos en el mismo valor. Intenté establecer las propiedades cell.backgroundView.backgroundColor y cell.accessoryView.backgroundColor en el color que quiero pero nada funciona. También intenté crear una subvista dentro de contentView, que resolvió el problema de backgroundColor (al evitarlo), pero crea el problema, donde el interruptor se encuentra en la parte superior de la cell.textLabel cuando el texto es demasiado largo.

¿Hay alguna manera de modificar el color de fondo de la vista de accesorios sin crear una subvista en contentView, o para modificar la longitud del cell.textLabel sin hacer una subclase de UITableViewCell?


Al leer la documentación (una idea novedosa), encontré el artículo " Una mirada más cercana a las celdas de la tabla-vista ". Me ayudó a entender la composición de las células y encontré mi respuesta ...

Las células se ven así ...

Dado que cell.accessoryView es una vista hermana de cell.contentView, tuve que pedirle a cell.contentView su supervisión, y luego pude cambiar el color de fondo de ambas vistas a la vez. Así es como se ve el código ...

// Cell Formatting cell.contentView.superview.backgroundColor = [UIColor greenColor];

Sé que es muy simple, pero soy un novato y me llevó años decelerar y leer el documento. ¡Ojalá, esto ayude a otras personas por ahí!


Si desea combinar el color de fondo de la vista de accesorios con el color de fondo de la celda, en iOS8 y Swift esto funcionó como un encanto en el método tableView (_, cellForRowAtIndexPath :):

let color = cell.contentView.backgroundColor cell.backgroundColor = color


UIView *myView = [[UIView alloc] initWithFrame:cell.frame]; myView.backgroundColor = [UIColor colorWithRed:214.00/255.00 green:233.00/255.00 blue:247.00/255.00 alpha:1.0]; cell.backgroundView = myView; [myView release];


- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { cell.backgroundColor = [UIColor yellowColor]; }