2012-01-28 2 views
3

Il y a une sous-vue de ma vue principale, avec un UIActivityIndicatorView dedans. Initialement, la propriété hidden de cette sous-vue est définie sur YES.UIActivityIndicatorAfficher ne pas animer après être apparu dans transitionWithView

Je souhaite que cette sous-vue disparaisse à l'écran. Je l'ai utilisé le code suivant pour y parvenir:

[UIView transitionWithView:self.view 
        duration:3.0 
        options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) 
       animations:^{ 
        self.subviewWithActivitySpinnerInIt.hidden = NO; 
       } 

Même si l'indicateur d'activité est réglée sur l'animation, il n'anime pas après son apparition avec le code ci-dessus. Cependant, si je remplace le code ci-dessus par la ligne ci-dessous - exactement au même endroit - alors quand l'indicateur d'activité apparaît, il s'anime.

self.subviewWithActivitySpinnerInIt.hidden = NO; 

Une idée de ce qui se passe?

(avec Xcode 4.2 et iOS 5.)

Répondre

0

Avez-vous essayé également d'ajouter le code au bloc d'achèvement? Le paramètre d'achèvement est manquant dans la question.

[UIView transitionWithView:self.view 
        duration:3.0 
        options:(UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) 
       animations:^{ self.subviewWithActivitySpinnerInIt.hidden = NO; } 
       completion:^{ self.subviewWithActivitySpinnerInIt.hidden = NO; }]; 

Comme alternative, mais il ne peut pas être adapté à vos besoins, vous voudrez peut-être envisager d'utiliser animateWithDuration au lieu de transitionWithView. Je pense que le code ci-dessous est équivalent:

[UIView animateWithDuration:3.0 
         delay:nil 
        options:UIViewAnimationOptionCurveLinear 
       animations:^{ 
        self.subviewWithActivitySpinnerInIt.alpha = 1.0; 
       } 
       completion:nil ];