Fügen Sie UtableViewController in der navigationsbasierten App Hintergrundbild hinzu
-
06-07-2019 - |
Frage
Ich habe eine navigationsbasierte App, in der ich drücke UITableViewControllers
auf den Stapel. Ich möchte einen Hintergrund hinzufügen UImage
zu allen meiner UITableViewControllers
. Kein UIColor
, aber an UImage
. Ich weiß, wie ich das mit einem tun kann Nib
Datei und Festlegen der UITableView
selbst zu benutzen [UIColor ClearColor]
, aber ich möchte nicht alle meine durchgehen UITableViewControllers
und ändern sie in die Verwendung Nib
Dateien usw.
Ich habe auch gefunden diese Lösung Was großartig wäre, wenn ich nur einen einzelnen TableViewController in meiner App verwenden würde. Ich denke UITableViewController
?
Alle Vorschläge wären großartig.
Lösung
In einer navigationsbasierten App ist es etwas anders: Ändern Sie einfach den Hintergrund der Navigationsansicht, auf der jede Tabellenansicht sitzt. Platzieren Sie den folgenden Code in viewDidLoad
von jedem UableViewController funktioniert:
self.navigationController.view.backgroundColor =
[UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
Möglicherweise müssen Sie es jedoch nur einmal auf der oberen Ebene des Navigationscontrollers und nicht in jedem Tabellenansicht -Controller tun (obwohl Sie immer noch jeden Hintergrund so einstellen müssen, dass sie frei sind).
Andere Tipps
Auf iOS6 verwenden Sie dies:
UIImageView *boxBackView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TextureBoxboard.jpg"]];
[self.tableView setBackgroundView:boxBackView];
Wenn Ihre Klasse eine UIViewController -Unterklasse ist, können Sie dies so tun:
[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];
Wie Gorm sagte
Ich muss es nur einmal auf der obersten Ebene der
UINavigationController
Die Antwort angesichts meiner Madhup ist die richtige Antwort. UitableViewController ist eine Unterklasse von UIViewController. Das Hinzufügen zu Ihrer ViewDID -Methode Ihres UitableViewControllers funktioniert also hervorragend.
Ab iOS 3.2 existiert -[UitableView SetBackgroundView:], was einfacher sein kann als einige der anderen vorgeschlagenen Lösungen für die Zukunft.