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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top