web-dev-qa-db-fra.com

apparence de la couleur d'arrière-plan iOS 8 UITableView

Xcode 6 beta 6, essayant de changer toutes les couleurs de fond de UITableView en apparence:

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

Mais semble que ça ne marche pas.

Étapes à suivre pour reproduire:

1 Créer un projet à vue unique

2 Ajoutez UITableView à ViewController dans storyboard

3 Définissez les délégués pour afficher le contrôleur et modifier l'arrière-plan dans IB:

enter image description here

4 Ajoutez une cellule dynamique et configurez la source de données:

- (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 Délégué en application:

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

  return YES;
}

6 Lancer l'application et regarder une couleur incorrecte:

enter image description here

Des suggestions pour résoudre ce problème? La définition de la couleur d’arrière-plan de chaque table ne semble pas être une bonne solution.

19
HotJard

essayez de "réinitialiser" le BackgroundColor sur "Default" dans InterfaceBuilder (même si c'est déjà Default, vous verrez un petit changement de couleur)

cela ne fonctionne pas avec les vues de table de style groupées

METTRE À JOUR:

cela a fonctionné pour moi

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

La couleur claire pour UITableViewCell ne fonctionnant pas dans Tablet dans XCode 6. La solution suivante résout ce problème.

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

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

Il semble que pour iOS 8, du moins dans notre cas, lorsque nous définissons la couleur d'arrière-plan d'une vue avec un tableau dans cette vue, nous devons explicitement définir les couleurs d'arrière-plan du tableau et de la cellule sur Effacer afin d'obtenir la couleur souhaitée. de la vue pour montrer. Je suppose que, avec les versions antérieures d’iOS, les cellules étaient par défaut transparentes, mais cela ne semble plus être le cas.

2
Prethen

[UITableVIew backgroundColor] n'est pas marqué avec UI_APPEARANCE_SELECTOR. Les proxy d'apparence ne fonctionneront que si le sélecteur est marqué avec UI_APPEARANCE_SELECTOR.

1
N3al

Définissez la couleur de fond de la cellule sur transparent dans TableView: willDisplayCell: forRowAtIndexPath:

1
Radin Gospodinov

Il semble que le proxy d’apparence présente un bogue apparemment non signalé dans iOS 8.0.x. cela n'a aucun lien avec la modification iOS 7 impliquant la couleur d'arrière-plan par défaut des cellules du tableau.

La bonne nouvelle, c'est que cela ne semble être qu'un problème entre iOS 8.0 et 8.0.2, pour les raisons suivantes:

  1. Mon iPhone 4S sur 7.1.2 n'a pas ce problème,
  2. L'iPhone 6 de mon collègue tournant sous 8.1 n'a pas ce problème.

Jusqu'à ce que la plupart des utilisateurs aient mis à niveau, vous devrez définir l'arrière-plan de manière explicite sur l'objet lui-même, nous renvoyant à l'ère de la pré-apparence :(

0
Ja͢ck