2011-06-13 2 views
0

J'ai du code qui doit être exécuté à l'intérieur des parenthèses d'animation UIView, mais je veux qu'il soit exempté d'être animé, donc tout le code de chaque côté est animé mais ce n'est pas le cas. Y a-t-il un moyen de faire cela?Exclure certaines actions de l'animation dans un bloc d'animation UIView?

+0

Est-ce que cette UI est liée au code? A-t-il besoin de fonctionner à un certain moment dans l'animation? –

+0

Oui, c'est le cas, et est lié à l'interface utilisateur. – Andrew

+0

pas sûr pourquoi cela a été downvoted car il semble être une question assez raisonnable – Sam

Répondre

2

Il n'y a pas de code que vous pouvez simplement insérer dans un bloc d'animation UIView pour l'exclure de l'animation, mais vous pouvez imbriquer animation UIView et blocs achèvement pour les chaînes d'animation arbitrairement compliquées:

[UIView animateWithDuration:0.3f animations:^ { 
    // Animation Code. 
} completion:^(BOOL finished) { 
    // Non-animated code, executed after first animation block... 
    // Blah; 
    // [Blah blah]; 
    [UIView animateWithDuration:0.3f animations:^ { 
     // More animation code. 
    }]; 
}]; 
+0

Il fonctionne une méthode dans une classe différente et je préfère ne pas diviser cette méthode en 3 sections juste pour que cela fonctionne. – Andrew

+4

@Andrew, rien ne vous empêche d'envoyer des messages aux autres classes de ce code. Peut-être que vous devriez poster votre code afin qu'il soit plus facile de comprendre votre problème spécifique. –

3

Cela semble soit le chemin:

[UIView performWithoutAnimation:^{ 
    view.frame = CGRectMake(...); 
}]; 
+1

Pourriez-vous expliquer votre réponse? –

+0

Si vous souhaitez apporter des modifications à votre vue dans un bloc d'animation mais exclure ces modifications de l'animation, il vous suffit d'envelopper les modifications que vous souhaitez exclure dans un bloc de code UIView.performWithoutAnimation. – EarlyRiser

Questions connexes