animateWithDuration termine immédiatement
Je connais une tonne de gens se posent la même question, mais aucune des solutions proposées semblent les plus importantes, c'est pourquoi je sollicite de nouveau:
J'ai le bloc de code suivant:
UIImageView *moneyHolder = [[UIImageView alloc] initWithImage:moneyImage];
if([paymentMethod.viewed intValue] == 0){
//CGRect targetFrame = CGRectMake(0, cell.frame.size.height/2-3, cell.frame.size.width, targetHeight);
CGRect targetFrame = moneyHolder.frame;
targetFrame.origin.y = cell.frame.size.height/2-3;
NSLog(@"animating");
[UIView animateWithDuration:2
delay:0
options: UIViewAnimationCurveEaseOut
animations:^{
moneyHolder.frame = targetFrame;
}
completion:^(BOOL finished){
NSLog(@"done");
}
];
}
Qui je PENSE devrait animer mon moneyHolder cadre. Malheureusement, cela semble se produire immédiatement plutôt que d'une durée de 2 secondes. Je peux le vérifier avec des horodatages de mon journal:
2012-05-11 03:41:50.102 AgilePoet[5824:15203] animation
2012-05-11 03:41:50.116 AgilePoet[5824:15203] fait
Quelqu'un aurait-il une idée sur le pourquoi de ce qui se passe? Toutes les autres questions sur le sujet axé sur la propriété de ne pas être animables, mais je sais qu'une imageview cadre est en cours d'animation. La seule chose que je peux penser est que ce code est écrit à l'intérieur de mon
-tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath method.
Merci d'avance!
eh bien j'ai changé le code en dehors de la willDisplayCell méthode et cela a fonctionné... personne Ne sait pourquoi il ne serait pas de l'intérieur willDisplayCell?
J'imagine que le code de dessin pour willDisplayCell appels removeAllAnimations sur la couche de cellules, et ainsi de mettre fin à votre animation prématurément.
Qu'avez-vous une solution ?
Oui, deuxièmement, que, après un peu de code si vous pouvez
OriginalL'auteur akhalsa | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
De citer les docs:
Si vous, ou un autre code, a changé la matrice de transformation pour la vue, les modifications du cadre de la propriété ne fonctionnent pas comme prévu.
Vous devriez changer le centre de la propriété (pour déplacer la vue) et les limites de la propriété (pour changer sa taille) à la place. Ces propriétés se comportent comme prévu.
Je privilégie toujours l'animation ou la modification du centre de la propriété au lieu de la vue.de l'origine. Non seulement en raison des problèmes mentionnés, mais aussi parce qu'il est beaucoup plus intuitive.(en plus, le cadre.origine positions sont différentes pour iOS/ Mac OS)
La chose que vous avez à regarder dehors pour lorsque vous utilisez 'centre') comme le positionnement de la propriété est si votre cadre est impair de pixels de la largeur ou de la hauteur. Réglage du centre de l'intégrale des coordonnées dans ce cas sera la cause de votre avis floue, car il ne sera pas aligné en pixels.
bon point.
sur une rétine périphérique, ce n'est pas un problème, étant donné que vos coordonnées sont en fait des "point" coordonnées, et sur une rétine périphérique d'un point est de 2 pixels de l'écran. La rétine appareils sont en mesure de montrer des images d'une netteté à 1/2 point de coordonnées.
OriginalL'auteur Duncan C
dans mon cas animation appelée dans la méthode viewdidload. Ne pas le faire. Essayez sur viewWillAppear
OriginalL'auteur Roman
Une autre chose qui provoque l'animation de terminer immédiatement, si l'objet en cours d'animation (UIImageView dans mon cas) est nul.
OriginalL'auteur John Shea