agregar imagen de fondo a UITableViewController en la aplicación basada en navegación
-
06-07-2019 - |
Pregunta
Tengo una aplicación basada en navegación donde inserto UITableViewControllers
en la pila. Me gustaría agregar un UImage
de fondo a todos mis UITableViewControllers
. No es un UIColor
, sino un UImage
. Sé cómo puedo hacer esto usando un archivo Nib
y configurando el propio UITableView
para usar [UIColor ClearColor]
, pero no quiero revisar todos mis UITableViewControllers
y cambiarlos para usar archivos Nib
, etc.
También encontré esta solución , lo que sería genial si solo estuviera usando un único controlador tableview en mi aplicación. Creo que podría haber una manera de hacer que esto funcione, agregando una subvista "debajo". mi vista de tabla que se crea por defecto en un UITableViewController
?
Cualquier sugerencia sería genial.
Solución
Es un poco diferente en una aplicación basada en navegación: simplemente cambie el fondo de la vista de navegación en la que se encuentra cada vista de tabla. Colocando el siguiente código en viewDidLoad
de cada trabajo UITableViewController:
self.navigationController.view.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
Pero es posible que solo necesite hacerlo una vez, en el nivel superior del controlador de navegación, en lugar de hacerlo en cada controlador de vista de tabla (aunque aún tendrá que configurar cada fondo para que se borre).
Otros consejos
En iOS6 use esto:
UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];
Si su clase es una subclase de UIViewController, puede hacerlo así:
[self.view setBackgroundColor:
[UIColor colorWithPatternImage:
[UIImage imageWithContentsOfFile:
[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
@"background.png"]]]];
UIImageView *backgroundView =
[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background.png"]];
backgroundView.frame = CGRectMake(0,
0,
self.navigationController.view.frame.size.width,
self.navigationController.view.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleHeight;
[self.navigationController.view insertSubview:backgroundView atIndex:0];
[backgroundView release];
self.tableView.backgroundColor = [UIColor clearColor];
Como dijo Gorm
solo necesita hacerlo una vez, en el nivel superior del
UINavigationController
La respuesta dada a mi Madhup es la respuesta correcta. UITableViewController es una subclase de UIViewController, por lo que agregarlo al método viewDidLoad de su UITableViewController funciona muy bien.
A partir de iOS 3.2, existe [UITableView setBackgroundView:], que puede ser más fácil que algunas de las otras soluciones propuestas en el futuro.