2010-10-11 5 views
2

L'application Contacts sur l'iPhone semble utiliser un UITableView groupé avec ce qui ressemble à une image en dehors de la table et les lignes de texte adjacentes à l'image sont décalées. Comme ceci: alt textDéplacement des lignes dans un UITableView groupé

Comment allez-vous créer une mise en page comme celle-ci avec les trois premières lignes placées à une position X différente de celle des autres lignes?

J'ai essayé de modifier frame.origin.x et frame.size de la cellule en remplaçant la méthode initWithStyle: reuseIdentifier dans ma classe UITableViewCell personnalisée mais pas de chance.

@implementation MyCustomCell 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) 
    { 
     CGSize offset = CGSizeMake(30, 30);   
     CGRect originalFrame = self.frame; 

     CGFloat newX = originalFrame.origin.x + offset.width; 
     CGFloat newWidth = originalFrame.size.width - offset.width; 

     CGRect newFrame = CGRectMake(newX, originalFrame.origin.y, 
            newWidth, originalFrame.size.height);  
     self.frame = newFrame;  
    } 

    return self; 
} 
@end 

Répondre

1

Vous ne savez pas si c'est la façon kosher de le faire, mais au lieu de changer les dimensions de l'image dans la méthode init, remplacez plutôt «layoutSubviews» de MyCustomCell.

Cela a fonctionné pour moi:

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    CGRect origFrame = self.frame;  
    CGSize offset = CGSizeMake(30, 30); 

    CGFloat newX = originalFrame.origin.x + offset.width; 
    CGFloat newWidth = originalFrame.size.width - offset.width; 

    CGRect newFrame = CGRectMake(newX, originalFrame.origin.y, 
           newWidth, originalFrame.size.height);  
    self.frame = newFrame; 
} 
+0

Merci. cela a fait l'affaire pour moi. Bonne idée. –

1

Essayez d'implémenter tableView:indentationLevelForRowAtIndexPath: sur votre délégué de vue de table.

+0

Je ne cherche pas à mettre en retrait la teneur de la cellule - Je voudrais avoir toute la ligne de la table déplacée sur. La bordure dessinée refléterait aussi ceci et vous auriez de l'espace à gauche de la rangée. –

+0

Je pensais que cela pourrait indenter la bordure de la cellule similaire à la façon dont fonctionne le "cliquez ici pour afficher le bouton de suppression". Je ne pense pas. –

Questions connexes