2009-08-04 6 views
4

J'essaie de faire quelque chose de très similaire à this post. À partir de Atebits Fast Scrolling in Tweetie post j'ai une sous-classe UITableView qui fait tout cela dessiner dans la méthode drawRect: c'est contentView. Cela fonctionne parfaitement et est super rapide. Ce que j'essaie de faire maintenant, c'est animer la transition de l'édition à l'édition non-éditable. Un exemple de ce que j'essaye de réaliser serait une situation avec du texte aligné à droite dans la cellule. Lorsque vous passez en mode d'édition, contentView se déplace vers la droite pour laisser la place au contrôle d'édition, mais le texte se décale également sur la droite. Si j'appelle simplement [contentView setNeedsDisplay] dans layoutSubviews, je peux réajuster le texte aligné à droite, mais il saute juste à sa nouvelle position.UITableViewCell Dessin personnalisé et animation lors de la saisie du mode Edition/Réorganisation

Comment puis-je obtenir la transition pour animer?

+0

Comment êtes-vous DESSIN vos cellules? Si vous suivez les conseils de Loren, vous devriez les dessiner directement par rapport à un groupe de sous-vues. Avez-vous des sous-vues (telles que 'UILabel') ou dessinez-vous des choses directement (comme' [myString drawInRect: someRect] ')? – jbrennan

Répondre

1

Votre layoutSubviews devrait ressembler à ceci:

-(void)layoutSubviews { 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 

    /* Change offsets here. */ 

    [UIView commitAnimations]; 
} 

Vous devrez peut-être ajouter à applicationDidFinishLaunching:

[UIView setAnimationsEnabled:YES]; 
+0

layoutSubviews fait implicitement de l'animation pour vous, de sorte que beginAnimations/commitAnimations n'est pas requis. Cela ne fonctionne pas lorsque vous dessinez votre propre contenu dans drawRect: car il n'y a pas de décalage à modifier. Les animations ne fonctionnent que lorsque vous utilisez des sous-classes UIView. – prime31

Questions connexes