2009-10-27 4 views
1

J'ajoute une étiquette datetime sur la droite d'une cellule de table. Lorsque le bouton "Supprimer" s'affiche, l'étiquette de date/heure doit être légèrement décalée vers la gauche. Mais comment obtenir la taille du bouton "Supprimer"?Comment obtenir la taille du bouton "Supprimer" dans un UITableViewCell lorsque vous balayez pour supprimer?

J'ai essayé de le trouver dans les cell.subviews mais j'ai échoué.

+0

Probablement vous n'avez pas besoin de connaître la taille de votre objectif, donc je suggère une méthode dans ma réponse. – DanSkeel

Répondre

3

Vous n'avez pas besoin de connaître la taille du bouton. Au lieu de cela, utilisez la taille de la propriété contentView de la cellule pour calculer les tailles des sous-vues. Lorsque vous glissez sur une cellule, UIKit adaptera la taille de contentView et appellera le layoutSubviews sur l'objet-cellule. Dans votre sous-classe de UITableViewCell, remplacez la méthode layoutSubviews et définissez les tailles appropriées pour les sous-vues.

Examinez RecipeTableViewCell.m de l'exemple de code iPhoneCoreDataRecipes d'Apple.

-1

Le bouton de suppression est 63x33.

+3

mais si ce n'est pas en anglais, la taille changera. –

1

La taille s'adapte au texte contenu. Voir le code suivant:

- (NSString *)tableView:(UITableView *)tableView 
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return @"Dynamic width!"; 
} 

vs

- (NSString *)tableView:(UITableView *)tableView 
titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return @"⏎"; 
} 
0

Si vous ne remplacez la méthode layoutSubviews dans votre cellule de vue de tableau personnalisé que mon approche est:

  1. Créez votre sous-vue personnalisé, Définir le cadre en fonction de contentView.bounds.
  2. Définissez autoresizingMask à UIViewAutoresizingFlexibleWidth.
  3. Ajoutez votre sous-vue personnalisée à ContentView d'une cellule.
  4. Configurer la cellule pour editing

Maintenant, quand vous glissez sur la cellule sur le bouton Supprimer apparaît et votre point de vue automatique redimensionne avec contentView.

2

Utilisez ce code dans votre classe de cellule personnalisée

- (void)layoutSubviews { 
     [super layoutSubviews]; 
     NSMutableArray *subviews = [self.subviews mutableCopy]; 
     while (subviews.count > 0) 
     { 
      UIView *subV = subviews[0]; 
      [subviews removeObjectAtIndex:0]; 
      if ([NSStringFromClass([subV class])isEqualToString:@"UITableViewCellDeleteConfirmationView"]) 
      { 
      UIView *deleteButtonView = (UIView *)[self.subviews objectAtIndex:0]; 
      CGFloat deleteBtnHeight=deleteButtonView.frame.size.height;//here you get the height 
      } 
     } 
    } 
Questions connexes