2009-07-13 21 views

Respuesta

3

.

UIImageView *background = [[UIImageView alloc]initWithImage: [UIImage imageNamed: @"background.jpg"]]; 
    [tableView addSubview: background]; 
    [tableView sendSubviewToBack: background]; 
+1

Gracias, lo intenté, pero creo que el mensaje sendSubviewToBack no funciona como debería en este caso: el UIImageView se posiciona sobre las celdas. ¿Alguna pista? –

+1

Este enfoque fue mi primer intento. Sin embargo, enviarlo a la parte de atrás todavía lo pone por encima de las células. –

-6

Una respuesta posible era - obviamente - que ya están en stackoverflow:

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

Ref: iPhone - Setting background on UITableViewController

Editar: Eso no es una respuesta perfecta, lo sé :)

+2

Eso usará partes del fondo en cada celda. Entonces, si tiene una imagen de fondo más alta que una celda, eso no funcionará. – OgreSwamp

+6

Esta NO es una respuesta correcta porque la imagen de fondo no se desplazará junto con la tabla. – Bobo

+1

¿Se supone que esto funciona? Estoy enfrentando el mismo problema que @OgreSwamp mencionó, aunque el fondo se puede desplazar con la vista de tabla, la celda usa partes del fondo en cada celda. Si esta solución no funciona, ¿por qué se aceptó como respuesta correcta? –

3

Creo que la respuesta es subclasificar UITableView y anular layoutSubviews. En UITableView debe hacer una propiedad que apunte a un UIImageView de fondo.

Cuando se reemplaza layoutSubviews acaba de escribir

-(void) layoutSubviews { 
    [self sendSubviewToBack: backgroundImageView]; 
    [super layoutSubviews]; 

} 
+0

Lamentablemente, esto no es suficiente para arreglar todos los casos de esquina donde se mezclan las vistas. – steipete

+0

¿cómo es eso? en realidad resuelve el problema, lo intenté yo mismo. ¿De qué casos de esquina estás hablando? – thewormsterror

+0

A veces, UITableView mezcla las vistas. No es determinista, y diferente entre las versiones de iOS. No uses esto Usé un desplazamiento UIImageView que se reposicionó en scrollViewDidScroll – steipete

6

Usted tiene que fijar la imagen de fondo a través de la propiedad de backgroundColor UITableView:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
+1

Si no es un 'UITableViewController' tienes que usar' tableView.backgroundColor = ... ' – Jochen

+0

Este es bueno – Eugene

+1

¿Esto también funciona en iOS6? Intento esto en mi viewDidLoad pero no pasa nada, todavía muestra la grouptableview estándar bg. – JonEasy

Cuestiones relacionadas