2009-12-25 12 views
14

Estoy construyendo una aplicación para iPhone sin el uso de Interface Builder. He configurar el fondo de un UITableView agrupados en Manor:Fondo de UITableView de posición fija iPhone

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

que estoy tratando de corregir esta imagen de fondo para que no se desplaza con las celdas de la tabla. ¿Alguien sabe como hacer esto?

+0

¿Cuál es tu problema con Interface Builder? –

+0

Estuve jugando con eso por un tiempo, pero encontré que lo que quería hacer era más fácil simplemente escribirlo en código. No me opongo a usarlo en el futuro. – treblig

Respuesta

1

Puede colocar una vista adicional debajo de UITableView y establecer su fondo, por lo que si UITableView es transparente - logrará su objetivo - tendrá el fondo correcto y no se desplazará.

+0

Esto significa combinar alfa la UITableView. ¿Has notado alguna degradación del rendimiento con este método? –

+0

Lo usé en un caso muy simple y, por lo tanto, no he visto ninguna degradación. Entonces la única manera de saberlo es probarlo, no debería tomar mucho tiempo. –

+0

Hmmm ... suena bien, pero sigo teniendo problemas. Coloqué el siguiente código en ViewDidLoad de mi UITableViewController: self.view.backgroundColor = [UIColor clearColor]; UIImageView * background = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "groupedBackground.png"]]; [self.view addSubview: background]; [self.view sendSubviewToBack: background]; Como "fondo" aún está dentro de tableView, se desplaza con el resto y las celdas no se muestran en la parte superior de la imagen de fondo. – treblig

45

nos encontramos con que funciona exactamente como usted lo pide, si en lugar de utilizar backgroundColor, se asigna a backgroundView, así:

self.tableView.backgroundView = [[UIImageView alloc] initWithImage: 
       [UIImage imageNamed:@"background.png"]]; 

Las celdas de la tabla a continuación, desplazarse en la parte superior del fondo, que es estacionario. (Esto ha estado disponible desde la versión 3.2 del SDK, creo.)

+1

se confirma que funciona en iOS 5.1.Esta respuesta debería ser aceptada en mi humilde opinión, ya que es una solución más ampliamente aplicable que el método que se anuncia con demasiada frecuencia para agregar una subvista detrás de la vista de tabla (que solo funciona correctamente si no está utilizando un UITableViewController). –

8

se puede lograr un fondo fijo utilizando una imagen de patrón de la siguiente manera:

UIView *patternView = [[UIView alloc] initWithFrame:tableView.frame]; 
patternView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"groupedBackground.png"]]; 
patternView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
tableView.backgroundView = patternView; 
5

Un poco tarde pero quizás para todos los otros que buscan para una solución Que podría conseguir que el trabajo llamando a la parentViewController en el método viewDidLoad del UITableViewController:

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

o con el uso de sólo un color de fondo:

self.parentViewController.view.backgroundColor = [UIColor scrollViewTexturedBackgroundColor]; 
self.tableView.backgroundColor = [UIColor clearColor]; 

Me tomó un tiempo para darse cuenta de eso, pero ahora funciona a las mil maravillas.

0

uso de este código de abajo en SWIFT 3.0 para lograr fondo constante para tableview

self.tableView.backgroundView = UIImageView(image: UIImage(named: "background.png")!) 
Cuestiones relacionadas