2011-05-21 11 views
5

Estoy tratando de establecer un UITableView con los elementos en capas como esto:UITableView w/encabezados de sección translúcidos y diferentes fondos de color sección

diagram

En concreto, la tabla tiene varias secciones y cada sección tiene una diferente color de fondo. Para hacer esto, normalmente solo modificaría cada celda. Lo difícil es que me gustaría que los encabezados de las secciones sean translúcidos. Cuando hago esto, el fondo debajo del encabezado es el color de fondo de la vista de tabla cuando no hay ninguna celda debajo del encabezado. Por supuesto, pude establecer el color de fondo de la vista de tabla, pero el color debajo de cada encabezado sería el mismo.

¿Cómo crearía una vista de tabla como la que se muestra en el diagrama?

ACTUALIZACIÓN: Para que quede absolutamente claro, sé cómo hacer una vista de encabezado personalizado, y sé cómo hacerlo translúcido utilizando la propiedad alfa. El problema es con lo que está BAJO la vista. Necesito lo que está debajo para ser el color de fondo de la sección, no el color de fondo de la vista de tabla.

Respuesta

1

No existe una solución exacta marco previsto para esto, pero podemos hacer uso backgroundView propiedad. Establecerlo en una vista de desplazamiento. Esta vista de desplazamiento contendrá vistas de fondo para la sección. Defínete como observador para la vista de tabla contentSize y contentOffset y modifica los valores de la vista de desplazamiento paralelos a la vista de tabla. Obtenga las recuentos de cuadros para sus vistas de fondo utilizando el método rectForSection: y cree subvistas a la vista de desplazamiento con los colores de fondo apropiados establecidos. Esto debería funcionar en cierta medida.

El problema con este enfoque es que la vista de desplazamiento permanecerá estática cuando la vista de tabla rebote en los bordes. Luego está el caso de hacer que la celda se mezcle bien con este fondo.

+0

Esa es una solución creativa. Voy a jugar para ver qué puedo hacer con eso. ¡Gracias! – leftspin

1

Use un UIImageView en el encabezado y use una imagen (personalizada).

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section   { 

     UIView * junkView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"headerImageBackground.png"]]; 
     junkView.alpha = .3; 
     [junkView autorelease]; 
     return junkView; 
} 
+0

¿No estaría ocultando las celdas que pasan debajo de la vista de la imagen debajo del encabezado? Eso derrotaría la razón por la que son translúcidos en primer lugar ... ¿O me estoy perdiendo algo? – leftspin

+0

Ah, vale, jugué un poco con eso. Si coloca un imageView en el encabezado, es posible que necesite jugar con su propiedad .alpha para obtener el efecto que desea. ver respuesta editada. – Rayfleck

+0

thumsup para el nombramiento! –

Cuestiones relacionadas