He visto algunas aplicaciones de iPhone que usan una imagen personalizada como fondo para una UITableView agrupada, en lugar de las líneas grises estándar.¿Cómo configuro una imagen de fondo para una vista de tabla agrupada?
¿Cómo se consigue esto?
He visto algunas aplicaciones de iPhone que usan una imagen personalizada como fondo para una UITableView agrupada, en lugar de las líneas grises estándar.¿Cómo configuro una imagen de fondo para una vista de tabla agrupada?
¿Cómo se consigue esto?
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.
Usted puede utilizar el método +[UIColor colorWithPatternImage:(UIImage)]
así:
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Background.png"]];
el problema con colorWithPatternImage: es que se necesita usar imágenes "estampadas", de lo contrario la imagen se baldosas al azar
este enlace tiene una solución simple, si desea que todos sus puntos de vista para tener el mismo fondo
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.
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
Me gusta este truco. – winnicki
En el delegado de aplicaciones también puede hacer más fácilmente: self.window.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "bg.png"]]; –
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. –
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;
}
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
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 –