Tout d'abord, je suis nouveau à ce sujet et je suis très probablement oublier quelque chose de très simple.
Question:
Je fais une application qui affiche des images randoms de imgur.com dans un tableView
. Pour une raison quelconque, toutes les cellules sont en retrait une petite quantité comme on le voit sur l'image ci-dessous. J'ai joué avec de nombreux parameters dans le storyboard
et n'ai pas eu de chance de régler le problème.
Voici le code de tableView …
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return (_images.count * 2); } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = nil; if (indexPath.row % 2 == 0) { //content cell cell = [tableView dequeueReusableCellWithIdentifier:@"RandomImgurTableCell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"RandomImgurTableCell"]; } long row = [indexPath row] / 2; SDImageCache* myCache = [SDImageCache sharedImageCache]; cell.imageView.image = [myCache imageFromDiskCacheForKey:_images[row]]; } else if (indexPath.row % 2 == 1) { //separator cell cell = [tableView dequeueReusableCellWithIdentifier:@"SeparatorCell"]; if(cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SeparatorCell"]; } } if (indexPath.row == (_images.count * 2) - 3) { [self checkToLoadMoreImages]; NSLog(@"Hit bottom of table, getting more images"); } return cell; }
Voici une photo de mes parameters tableView
et cellule …
L'ajustement de l' encart du séparateur devrait résoudre ce problème. Je crois que la valeur par défaut est 15px
dans la gauche.
Afin de se débarrasser de l'indentation, vous définissez les insertions de séparateur à zéro. Le résultat est montré dans l'image suivante.
Dans du code
myTableView.separatorInset = UIEdgeInsetsZero
Dans l'interface Builder
Remarques
Si les cellules provoquent le retrait, vous pouvez append les lignes suivantes à tableView:cellForRowAtIndexPath
:
cell.separatorInset = UIEdgeInsetsZero cell.preservesSuperviewLayoutMargins = false cell.layoutMargins = UIEdgeInsetsZero
Si vous supportez toujours la pré-version d'iOS 8, consultez cette réponse pour plus de détails.
Si vous faites reference à l'indentation horizontale, vous devriez essayer ce qui suit:
Assurez-vous que le cadre de vue du contenu x origine est à 0:
yourTableViewCell.contentView.frame = CGRectMake(0.0f, 0.0f, SOME_WIDTH, SOME_HEIGHT);
Vous devez vous assurer que la vue d'image que vous ajoutez à UITableViewCell
est alignée avec son bord gauche parent. Si vous utilisez autolayout, faites-le dans le constructor de l'interface. Autrement:
yourImageView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight;
Voir que lorsque l'image est mise à l'échelle, elle rest fidèle au cadre de vue:
yourImageView.contentMode = UIViewContentModeScaleAspectFill;
Assurez-vous que la cellule a 0 indentation:
yourTableViewCell.indentationLevel = 0;
Si rien de cela ne vous aide, définissez un point d'arrêt et examinez les sous-vues de la cellule à l'aide de l'une des commands de debugging suivantes:
po [[UIWindow keyWindow] recursiveDescription] po [yourTableViewCell recursiveDescription]