Le délai d'animation d'UIView ne retarde pas l'animation
Je suis en train de réaliser une animation sur une étiquette où un flip animation arrive et après c'est fait et après un délai, Le texte de l'étiquette change.
Il semble que le retard n'arrive jamais. Le texte modifie immédiatement après la rotation complète bien que je suis en utilisant UIView animateWithDuration:0.5
retard:4.0 dans la réalisation du bloc. Si, au contraire, je fais un performSelector
avec Retard dans la completion block
(le commentaire de déclaration), il fonctionne comme prévu. Aucune idée de pourquoi la valeur de retard est d'être ignoré?
- (void) flipShapeWithText:(NSString *)text {
[UIView transitionWithView:someLabel duration:0.15 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
someLabel.text = text;
}completion:^ (BOOL finished){
// [self performSelector:@selector(updateLabelText:) withObject: @"New Text" afterDelay:4.0];
[UIView animateWithDuration:0.5
delay:4.0
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{
currentShapeNameLabel.text = @"New Text" ;}
completion:nil];
}];
}
source d'informationauteur Asem H.
Vous devez vous connecter pour publier un commentaire.
La
delay
param deanimateWithDuration:delay:options:animations:completion
spécifie le délai avant que l'animation se produit. Vous êtes à la mise en place du texte dans le bloc d'animation ainsi, après le retard est de plus de, les animations qui commencent immédiatement des modifications au texte tel que le changement n'est pas animables. Pour faire ce que vous voulez, modifiez le texte dans la réalisation de bloc comme suit:Vous pouvez éliminer le retard si vous souhaitez que l'animation de commencer immédiatement. Si vous souhaitez que le texte du changement 4 secondes après que l'animation est terminée ajouter que le retard pris dans l'achèvement de la bloquer avec
dispatch_after()
ouperformSelector:withDelay:
.Dans mon cas, le problème était que plus haut dans le code que j'appelle
UIView
'ssnapshotViewAfterScreenUpdates
avec une valeurtrue
. Après la modification que pourfalse
il a bien fonctionné.