J'apprends à propos de UITableview sur iOS et suivre un cours en ligne. Je vois bien la table, mais les images sur mes cellules ne sont pas tout à fait à gauche (alors que celles de l'instructeur le sont). Voici une capture d'écran des cellules en question:
Je ne veux pas de cet écart, je veux que les images soient positionnées directement au début de la cellule, tout le path vers la gauche. J'ai fait quelques searchs et il semble qu'Apple a changé l'apparence par défaut des cellules entre ios6 et ios7 de sorte que maintenant les images dans les cellules montrent un petit écart à gauche. Pour m'en débarrasser, j'ai essayé UIEdgeInsets:
[tableView setSeparatorInset:UIEdgeInsetsZero];
et ça ne marche pas. J'ai aussi essayé cette approche:
cell.imageView.frame = CGRectMake( 0, 0, 50, 55 );
Rien ne se passe. Alors, comment pourrais-je y aller? Merci
modifier————————————————- ————————————————– —————————-
Toujours pas trouvé la réponse à cela. Les solutions affichées ici ne fonctionnent pas. J'ai trouvé ce morceau de code:
self.tableView.contentInset = UIEdgeInsetsMake(0, -50, 0, 0);
Ce qui d'ailleurs m'insortingguait complètement (puisque le paramètre affecté devait être le y?) Je pensais avoir résolu le problème en faisant apparaître l'image sur la cellule tout à fait à gauche, jusqu'à ce que je réalise qu'elle bougeait toute la vue vers la gauche (comme J'aurais dû m'y attendre) laissant un espace égal de l'autre côté de l'écran. Tout ce que je veux, c'est que mes images dans les cellules apparaissent tout à fait à gauche de la cellule, comme c'était le cas sur les ios précédents. Merci
Cela arrive parce que le décalage du contenu de la table par défaut est de 15, vous devez le changer avec 0. Voyez-le une fois, vous avez l'idée Supprimer l'espace vide avant les cellules dans UITableView
Si vous créez des cellules personnalisées. UITableViewCell a le propriétaire imageView. Changer le titre de l'image dans votre cellule. Si vous utilisez une cellule par défaut, utilisez une cellule personnalisée avec une contrainte Espace avant = 0.
Il vaut mieux ne pas utiliser imageView par défaut de la cellule. Faites glisser et déposez UIImageView à partir de la bibliothèque d'objectives, créez une cellule de vue de table personnalisée (class enfant de UITableViewCell), puis créez et sortez la vue de l'image que vous venez de faire glisser.
L'espacement dans UITableViewCell
est dû à la valeur TRUE
par défaut returnnée par la méthode UITableViewDelegate
de UITableViewDelegate
.
J'étais capable de reproduire votre problème par le scénario ci-dessous:
UITableView est en mode modifiable :
self.tableView.editing = true
Et vous avez implémenté:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewCellEditingStyleNone; }
Pour corriger votre code: Si vous ne souhaitez pas définir le style d'édition, vous pouvez désactiver le mode d'édition en
self.tableView.editing = false
et supprime editingStyleForRowAtIndexPath
.
Sinon, si vous avez besoin du mode d'édition, définissez le style d'édition approprié ( UITableViewCellEditingStyleDelete
ou UITableViewCellEditingStyleInsert
) ou désactivez simplement l'indentation.
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { return FALSE; }
Vous devez créer une cellule personnalisée en ajoutant une nouvelle class en tant que sous-class de UITableViewCell. alors vous pouvez concevoir une cellule avec autolayout et des contraintes qui vont résoudre le problème.
Il existe un autre moyen concret d'y parvenir en créant une sous-class uitableviewcell (class personnalisée).
étapes à suivre
utiliser ci-dessous le code uitableview
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ NSSsortingng *MyIdentifier = @"uniqueIdentifire"; yourCustomClassForCell *cell = (yourCustomClassForCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil){ cell = [[yourCustomClassForCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier]; } cell.imageView.image = [imageAry objectAtIndex:indexPath.row]; }
N'oubliez pas de donner identifire en sélectionnant votre cellule en utilisant storyboard Inspecteur d'atsortingbut uniqueIdentifire pour identifier la propriété voir l'image.
Aussi, vous pouvez donner un peu d'espace vertical entre les cellules juste pour append ce code ci-dessous (méthode seulement) à l'intérieur de customeCellClass.
- (void)setFrame:(CGRect)frame { // method to insert gap between table view cell frame.origin.y += 6; frame.size.height -= 2 * 6; [super setFrame:frame]; }
Vous ne pouvez pas vraiment changer le cadre des sous-vues embeddedes de uitableviewcell comme imageview, accessoryview. Mais si vous créez une class tableviewcell personnalisée (même si vous n'y ajoutez aucun sous-élément), vous pouvez modifier l'image de l'imageview incorporée en remplaçant la méthode layoutSubviews à l'intérieur de UITableViewCell. Je l'ai essayé et ça fonctionne.
#import "TableViewCell.h" @implementation TableViewCell - (void)awakeFromNib { [super awakeFromNib]; // Initialization code } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } -(void) layoutSubviews{ [super layoutSubviews]; CGRect frame = self.imageView.frame; frame.origin.x = 0; self.imageView.frame = frame; } @end