He creado un grupo de células que puedo volver a usar en una vista de tabla. Todas esas células tienen diferentes UILabels dentro de ellos y algunos UIImageViews (nada cubre al completo de la célula).

Configurar el color de fondo en IB no tiene ningún efecto (siempre blanco o transparente, no se puede decir que uno de ellos). Pero si yo pulse Comando-R (simular la interfaz de la celda tiene el correcto color de fondo en el simulador.

Traté de ponerlo en tableView:cellForRowAtIndexPath: pero no funciona como yo creo que tampoco.

Este es el truco:

cell.contentView.backgroundColor = [UIColor redColor];

pero estos no tienen ningún efecto (incluso si me puse el cell.contentView.backgroundColor a clearColor):

cell.backgroundView.backgroundColor = [UIColor redColor];

cell.backgroundColor = [UIColor redColor];

Me puse todo el diseño/fuente/fondo de las cosas en IB. Alguna idea de por qué esto no funciona en este caso?

¿Por qué tengo que modificar el contentView‘s backgroundColor y no la backgroundView‘s?

Parece ser un problema común. Podría alguien por favor me apunte en la dirección correcta (por fin) a entender cómo los colores de fondo se manejan dentro de una vista de tabla de la célula.

InformationsquelleAutor klemens | 2010-11-10

2 Comentarios

  1. 1

    Existe una fácil solución: Cuando se crea un UITableViewCell en el Interface Builder, basta con arrastrar y soltar un adicional de UIView, de manera que cubra toda la UITableViewCell va a crear dentro del IB. Lugar otros elementos de interfaz de usuario en la parte superior de esta adicionales UIView. Puede establecer este extra UIView a cualquier fondo te gusta.

    Hay muy pocas respuestas en StackOverflow que sugieren cambiar el color de fondo de su UITableViewCell mediante una línea de código similar a este:

    cell.contentView.backgroundColor = [UIColor redColor];

    Si añadir una sombra a su celular mediante el ajuste de la contentView‘s tamaño de fotograma ligeramente, usted puede encontrar que esta línea va a cambiar tanto el color de fondo de la celda y el color de tu sombra área.

  2. 53

    Para cambiar el color de fondo de la celda, debe hacerlo en la willDisplayCell:forRowAtIndexPath: método. Esto se menciona en el UITableViewCell documentación cerca de la parte inferior de la vista general. Por lo que necesita:

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

    La contentView es sólo la recomienda subvista poner controles personalizados en la que la célula se plantea correctamente cuando el cuadro de edición que está pasando.

    • thx por la info. pero aún así, ¿por qué es el valor en el IB no funciona? yo sólo la etiqueta.texto en el controlador. y configurar el fondo IB funciona en todos los nib (UIView), pero no con UITableViewCell.
    • No pudo confirmar en este momento, pero UITableViewCell parece ser un caso especial. En el Apple docs para willDisplayCell y personalizado de las células, se menciona el uso de este método que se llama «después de la vista de la tabla se realiza la configuración de colores basados en la selección, etc». Es posible que funcione si se crea una subclase personalizada de UITableViewCell en el código, pero no es capaz de comprobar ahora mismo.
    • ok, así que sólo tienes que configurar en el código. thx por tu excelente ayuda.
    • Me pregunto por qué es así? Es algún tipo de bug o qué?
    • Ahora simplemente puede definir la celda.contentView.backgroundColor lugar, por ejemplo, en cellForRowAtIndexPath:
    • …pero tenga en cuenta: errores en Xcode5, si establece el color en InterfaceBuilder, Xcode5 deshabilita todo el sistema de color de las filas de la tabla. Estúpido.
    • buena respuesta, gracias. Puede confirmar que la configuración de este atributo aún no funciona en el IB de Xcode 7.0.1. Apple sólo debe eliminar si no tiene ningún efecto

Dejar respuesta

Please enter your comment!
Please enter your name here