2010-01-16 10 views
15

Me gustaría utilizar una imagen fija como fondo en una vista de tabla agrupada simple en mi programa de iPhone. Desafortunadamente, no importa lo que haga, el fondo siempre es blanco sólido. He seguido varias supuestas soluciones en este sitio y otras han sido en vano. Aquí está el código relavant en el método viewDidLoad de la clase controlador de vista de tabla (en cuenta que este código utiliza un color azul sólido en lugar de una imagen por motivos de simplicidad):Agregar UIView detrás de UITableView en UITableViewController código

self.tableView.opaque = NO; 
self.tableView.backgroundColor = [UIColor clearColor]; 
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
backgroundView.backgroundColor = [UIColor blueColor]; 
[self.tableView.window addSubview:backgroundView]; 
[backgroundView release]; 

sospecho que no soy el posicionamiento de la backgroundView ver en el lugar correcto. He intentado sendToBack :, bringToFront :, y otros pero siempre obtengo un fondo blanco. ¿Es posible hacer esto desde UITableViewController? ¿Debo usar Interface Builder?

Respuesta

19

subviews establecimiento Uso UITableView 's para añadir su fondo hay:

[self.tableView addSubview:backgroundView]; 
[self.tableView sendSubviewToBack:backgroundView]; 

Además, probablemente tendrá que ser fijado a transparente para su backgroundView sea visible su celular/cabecera etc.

+0

La propiedad 'subviews' devuelve un' NSArray', que no responde al método '-addSubview:'. –

+0

Buena captura: fija. Solo necesitas el método 'addSubview' de un' UIView'. –

3

Simplemente establecería la propiedad backgroundColor del UITableView. Puede utilizar el método de UIColor +colorWithPatternImage: para convertir un UIImage en un UIColor (que se repetirá en toda la vista, si no es lo suficientemente grande):

// From within UITableViewController's -viewDidLoad: 
UIImage *image = [UIImage imageNamed:"yourImage.png"]; 
self.tableView.backgroundColor = [UIColor colorWithPatternImage:image];

Basta con añadir yourImage.png y [email protected] a su paquete de aplicaciones, el tamaño de manera apropiada, y estás todo listo.

+1

Eso da como resultado algo extremadamente extraño. –

+0

Parece que funciona solo para espacios entre celdas. El encabezado de tabla, los encabezados de sección y el espacio en cada lado de las celdas no coinciden con la imagen. –

+0

Proporcionará el color de acuerdo con el espacio visible disponible, por lo que la imagen se ve "pegada" a las filas superiores o inferiores de la tabla. – leolobato

14

A partir de iOS 3.2, el UITableView tiene una propiedad llamada backgroundView. Así que en lugar de añadir ningún subvistas, simplemente hacer esto:

self.tableView.backgroundView = backgroundView; 

La vista de tabla se encargará de cambiar el tamaño de la vista de fondo para el tamaño de la tabla. La vista de fondo no se moverá con las celdas de la tabla. En otras palabras, si la vista de fondo es una vista de imagen, la imagen parecerá permanecer bloqueada en la pantalla con las celdas deslizándose a través de ella. Las vistas de tabla predeterminadas también parecen tener la capacidad de hacer que los elementos apropiados de la celda se borren automáticamente si hay una vista de fondo presente.

+0

Establecer el backgroundColor usando una imagen causa problemas en las áreas externas de cada fila de celdas. Esto funciona genial – nh32rg

+0

Para mí en iOS7/8 si configuro el backgroundView cubre las celdas. –

Cuestiones relacionadas