it-swarm.com.de

iOS 8 UITableView-Hintergrundfarbe

Xcode 6 Beta 6, der versucht, alle Hintergrundfarben von UITableView im Erscheinungs-Proxy zu ändern:

[[UITableView appearance] setBackgroundColor:[UIColor redColor]]

Aber es scheint, dass es nicht funktioniert.

Schritte zum Reproduzieren:

1 Einzelansichtsprojekt erstellen

2 Fügen Sie UITableView zu ViewController in Storyboard hinzu.

3 Legen Sie Delegierte fest, um Controller anzuzeigen und den Hintergrund in IB zu ändern:

enter image description here

4 Fügen Sie eine dynamische Zelle hinzu und konfigurieren Sie die Datenquelle:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return 2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell1Identifier" forIndexPath:indexPath];
  return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  return 60.f;
}

5 Im App-Delegierten:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.
  [[UITableView appearance] setBackgroundColor:[UIColor redColor]];

  return YES;
}

6 Führen Sie die App aus und achten Sie auf eine falsche Farbe:

enter image description here

Vorschläge zur Behebung dieses Problems? Das Festlegen der Hintergrundfarbe für jede Tabelle sieht nicht nach einer guten Lösung aus.

19
HotJard

versuchen Sie, die BackgroundColor im InterfaceBuilder auf "Default" zurückzusetzen (selbst wenn sie bereits Default ist, sehen Sie eine kleine Farbänderung)

dies funktioniert nicht mit gruppierten Stilübersichten

UPDATE:

das hat für mich funktioniert

[[UIScrollView appearance] setBackgroundColor:[UIColor redColor]];
10
Chakalaka

Klare Farbe für UITableViewCell, das in Tablet in XCode 6 nicht funktioniert. Die folgende Problemumgehung löst für mich.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

     cell.backgroundColor = [UIColor redColor];
}
5
Megamind

Es scheint, dass unter iOS 8, zumindest für unsere Umstände, wenn wir die Hintergrundfarbe einer Ansicht mit einer Tabelle in dieser Ansicht festlegen, explizit die Tabellen- und Zellenhintergrundfarbe auf Clear setzen müssen, um die gewünschte Farbe zu erhalten aus der ansicht zu zeigen. Ich denke, mit früheren iOS-Versionen waren die Zellen standardmäßig transparent, aber das scheint nicht mehr der Fall zu sein.

2
Prethen

[UITableVIew backgroundColor] ist nicht mit UI_APPEARANCE_SELECTOR markiert. Darstellungsproxys funktionieren nur, wenn der Selektor mit UI_APPEARANCE_SELECTOR markiert ist.

1
N3al

Setzen Sie die Zellenhintergrundfarbe in TableView: willDisplayCell: forRowAtIndexPath auf transparent.

1

Es scheint, dass der Erscheinungs-Proxy in iOS 8.0.x einen scheinbar nicht gemeldeten Fehler aufweist. Es ist unabhängig von der Änderung von iOS 7, die die Standardhintergrundfarbe von Tabellenzellen beinhaltet.

Die relativ gute Nachricht ist, dass dies nur ein Problem zwischen iOS 8.0 und 8.0.2 zu sein scheint, weil:

  1. Mein iPhone 4S in 7.1.2 hat dieses Problem nicht.
  2. Das iPhone 6 meines Kollegen, auf dem 8.1 ausgeführt wird, hat dieses Problem nicht.

Bis die meisten Benutzer ein Upgrade durchgeführt haben, müssen Sie den Hintergrund explizit auf das Objekt selbst setzen und uns in die Zeit vor dem Auftritt zurückversetzen :(

0
Ja͢ck