2009-09-03 6 views

Respuesta

3

En otro proyecto (desarrollado usando 2.2.1) lo hice estableciendo la opacidad de fondo de UITableView' en 0%, y luego simplemente superponiendo un UIImageView usando Interface Builder. Esto me permitió tener un fondo fijo independientemente del estado de la tabla. También puede configurar el fondo de UITableView para que sea una imagen, pero luego el fondo se desplaza con la tabla. (No tengo el código a la mano en este momento, pero hace un tiempo recibí consejos sobre los foros de desarrolladores de Apple).

Tenga en cuenta que esto puede causar algunos problemas de rendimiento. Apple desalienta el uso de la transparencia siempre que sea posible porque las GPU en los modelos anteriores a 3GS no son particularmente robustas.

3

Usted puede utilizar el método +[UIColor colorWithPatternImage:(UIImage)] así:

self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]]; 
2
self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"SortByCategory_320x480.png"]]; 

self.tableView.separatorColor = [UIColor clearColor]; 

self.tableView.backgroundColor = [UIColor clearColor]; 

Espero que esto ayude. No mostrará un fondo traslúcido horrible detrás de las celdas, especialmente en el caso de UITableView agrupado.

+4

Acceso es una idea terrible - no sé qué tipo de respaldo que tiene, y es un muy mal violación de encapsulación Incluso si funciona ahora, la próxima actualización de iOS puede romper totalmente su código. No hagas esto –

24

Esto es lo que funcionó para mí (y bastante simple una vez que lo he descubierto;)

1) Añadir un punto de vista en delegado de la aplicación y que sea una vista secundaria de la ventana:

UIView *bgView = [[UIView alloc]initWithFrame:window.frame]; 

bgView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"screenBG.png"]]; 
[window addSubview:bgView]; 
[bgView release]; 

2) en cada archivo .m controlador de vista, bajo viewDidLoad, establecer el color de fondo de esa visión particular a transparente (por lo que la otra bgView creada anteriormente se mostrará a través):

self.view.backgroundColor = [UIColor clearColor]; 

Y en mi caso, la v El controlador iew en el paso 2 era un controlador de tableview. Se ve muy bien.

Y por cierto, haciendo lo siguiente en cada controlador de vista no funcionaba bien:

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

así que siga los pasos 1 y 2 anteriores.

Espero que esto ayude a cabo, Tbone

+0

Me gusta este truco. – winnicki

+2

En el delegado de aplicaciones también puede hacer más fácilmente: self.window.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "bg.png"]]; –

+0

Estoy de acuerdo con Gil Margolin aquí ... era MUCHO MÁS fácil establecer backgroundColor de la ventana como una imagen. Con una advertencia: debes cargar manualmente la imagen correcta para retina/iphone5, lo que complica un poco las cosas. –

9

Prueba este parentViewController.view

- (void) viewDidLoad { 
    [super viewDidLoad]; 

    self.tableView.backgroundColor = [UIColor clearColor]; 
    self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"wallpaper.png"]]; 
    self.tableView.opaque = NO; 
} 
+0

También puede agregar una vista de imagen detrás de la vista de tabla en lugar de establecer un color de fondo, lo que le permitirá evitar el uso de una imagen de patrón. – TigerCoding

Cuestiones relacionadas