2010-08-17 5 views
20

Probablement c'est juste une question de syntaxe correcte. J'utilise la méthode UIView animateWithDuration:delay:options:animations:completion:.Comment puis-je définir plusieurs options pour UIViewAnimation?

Le options: est la partie problématique ici: quand je cède qu'une seule option (par exemple UIViewAnimationOptionCurveEaseInOut) tout fonctionne bien. Et si je veux attribuer plusieurs options à la même animation? Comment puis je faire ça?

J'ai essayé le code suivant, mais la partie options: avéré être complètement ignoré:

> [UIView animateWithDuration:DURATION 
>       delay:DELAY 
>      options:(UIViewAnimationOptionAllowUserInteraction, 
>        UIViewAnimationOptionCurveEaseInOut) 
>     animations: ^{/*animations here*/} 
>     completion: ^(BOOL finished){/*actions on complete*/}]; 

Il était juste d'essayer et cela n'a pas fonctionné. Quelle syntaxe dois-je utiliser ici?

Merci pour toute aide à l'avance.

Répondre

51

Objective-C

options:(UIViewAnimationOptionAllowUserInteraction | 
          UIViewAnimationOptionCurveEaseInOut) 

Swift

Swift UIViewAnimationOptions est une Option set type et des options multiples peuvent être transmis comme suit:

options:[.AllowUserInteraction, .CurveEaseInOut] 
+0

J'étais sûr que ce serait facile. Merci, Vladimir. Спасибо. –

+0

Quelle est la réponse pour Swift? Il n'aime pas le '|' opérateur apparemment. – MarqueIV

2

Juste pour ajouter la raison il semble que le compilateur ignoré vos options fournies encore didn ' t jettent une erreur est parce que la syntaxe que vous avez essayé utilise l'opérateur virgule qui est souvent négligé dans C. Essentiellement

(UIViewAnimationOptionAllowUserInteraction, UIViewAnimationOptionCurveEaseInOut) 

tells le compilateur de jeter la première option et n'affecter la valeur après la virgule. Dans le cas plus général, le premier argument de l'opérateur de virgule est évalué, mais son résultat est rejeté.

Questions connexes