2010-03-11 6 views
0

J'ai une vue de table avec un fond d'image personnalisé de chaque cellule. En mode normal, l'arrière-plan est parfait et remplit toute la cellule. Quand la tableView entre en mode d'édition, le bouton "-" apparaît à gauche et tous les objets sont en retrait et dans la gauche j'ai un problème avec le fond: il y a une zone blanche. Quelqu'un peut-il m'aider? L'image d'arrière-plan est assez grande pour remplir toute la cellule mais elle est déplacée en mode d'édition. Puis-je le résoudre? Merci beaucoup!Comment redimensionner UITableViewCell Arrière-plan en mode d'édition

Mise à jour:

J'ai utilisé ce code dans ma sous-classe UITableViewCell:

- (void) layoutSubviews 
{ 

    UIImage *backgroundImage = [UIImage imageNamed:@"sfondoCella2.png"]; 
    UIImageView *bgView = [[UIImageView alloc] initWithFrame:self.bounds]; 
    bgView.image = backgroundImage; 
    self.backgroundView = bgView; 
    [bgView release]; 

} 

Pour définir arrière-plan et fonctionne appranetly bien en mode normal, mais quand vous allez en mode édition tout va mal: le circulare rouge Le bouton Supprimer n'apparaît pas et l'indentation de la cellule (parfaite avec l'arrière-plan défini dans IB) n'est pas correcte.

+0

Pouvez-vous ajouter votre code qui définit l'image de fond? –

Répondre

2

Je ne pense pas qu'il existe un moyen d'ajouter une image de fond via IB. Au lieu de cela, je suppose que vous ajoutez juste une sous-vue UIImage.

J'ai ajouté des images d'arrière-plan aux cellules du tableau en code et je n'ai pas le problème que vous décrivez.

UIImage *backgroundImage = [UIImage imageNamed:@"my-bg.png"]; 
UIImageView *bgView = [[UIImageView alloc] initWithFrame:self.backgroundView.frame]; 
bgView.image = backgroundImage; 
cell.backgroundView = bgView; 
[bgView release]; 

Idéalement, vous pouvez le faire dans une méthode layoutSubviews de mesure UITableViewCell puis dire IB que c'est la classe pour votre cellulaire. En étendant UITableViewCell, vous avez la possibilité de remplacer les méthodes suivantes et d'avoir un contrôle sur l'apparence exacte de la cellule en mode édition ou sélectionnée.

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated 
- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
+0

Le problème est que je veux avoir 2 arrière-plan différent lorsque la cellule que j'ai sélectionnée. Dans IB si vous définissez l'arrière-plan et la propriété d'arrière-plan sélectionné, vous pouvez changer d'arrière-plan lorsque vous appuyez sur votre cellule. Avec votre méthode, l'image d'arrière-plan sélectionnée ne fonctionne pas lorsque vous appuyez sur la cellule – Luca

+0

En fait, si vous implémentez votre propre UITableViewCell, vous pouvez remplacer setHighlighted et/ou setEditing. –

2

Vous avez probablement ajouté votre vue d'image en tant que sous-vue du contentView du UITableViewCell. Vous devez définir votre vue d'image en tant que backgroundView du UITableViewCell. Le backgroundView ne bouge pas en mode éditant.

+0

Je l'ai ajouté dans Interface Builder en arrière-plan. Je pense que c'est la même chose – Luca

Questions connexes