62 votes

Image d'arrière-plan de l'UITableView

J'essaie de configurer une image png comme arrière-plan de mon tableau. Avec le code suivant, tout va bien ! Mais seulement sur iPhone Simulator. Si j'essaie d'exécuter l'application sur un appareil iPhone, l'arrière-plan de tableview reste blanc (ou clair). Pensez-vous qu'il s'agit d'un problème lié à la façon dont j'ai essayé de définir la couleur d'arrière-plan ? J'ai essayé de nombreuses façons jusqu'à la suivante, mais toutes ont le même problème.

self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.opaque = NO;
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];

Merci d'avance !

2 votes

Il semble que l'image ne soit pas copiée sur votre appareil. Que fait [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]; retour sur l'appareil ? Jetez-le sur la console, s'il vous plaît.

0 votes

Je pense que Nick a raison, vous pouvez le vider en utilisant le débogueur pendant le point d'arrêt en tapant : po [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]] ;) un nettoyage/reconstruction pourrait aider.

0 votes

Ou juste NSLog(@"imageView: %@", [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]]);

173voto

Ravin Points 5601

Veuillez utiliser le code suivant.

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView;
[tempImageView release];

Merci,

0 votes

Cela m'ennuyait depuis longtemps. Merci beaucoup ! :)

0 votes

Cette option est préférable à la modification de la couleur d'arrière-plan, car elle ne répétera pas l'arrière-plan lorsque le tableau défile ou rebondit.

0 votes

Définir la vue de l'image sur le cadre est en fait mauvais, puisque vous prenez l'origine de la vue de la table, qui pourrait potentiellement être non nulle, alors que la vue de l'image devrait probablement toujours avoir une origine nulle.

17voto

Nikolay Klimchuk Points 139

Je pense que cette approche est plus propre :

UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"TableBackground.jpg"]];
self.tableView.backgroundColor = background;
[background release];

0 votes

Savez-vous comment faire pour que l'image soit fixe dans sa position afin qu'elle ne défile pas avec la table ? et aussi pour que l'image commence à "X" pixels du haut ?

0 votes

Cela entraînerait des problèmes de performances sur les uitableview et scrollview

1 votes

L'utilisation de cette solution sur les appareils à rétine provoque un étirement des images. C'est un point à surveiller.

7voto

Nick Forge Points 13758

Votre image est-elle réellement nommée TableViewBackground.PNG (notez les majuscules) ? La casse doit correspondre exactement sur un appareil iOS, alors qu'elle n'a pas besoin de correspondre exactement dans le simulateur.

5voto

Jona Points 31
 UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBackground.png"]];
[tempImageView setFrame:self.tableView.frame]; 

self.tableView.backgroundView = tempImageView;
 [tempImageView release];

Cela fonctionne parfaitement. Merci à Ravin par Jona

1voto

matsr Points 2999

Cela fonctionne parfaitement, même si vous souhaitez utiliser une image à motif pour votre arrière-plan.

UIImage *image = [UIImage imageNamed:@"something.png"];
self.tableView.backgroundView = nil;
self.view.backgroundColor = [UIColor colorWithPatternImage:image];

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X