2010-08-17 3 views
20

Probabilmente si tratta solo di una corretta sintassi.Come posso definire più opzioni per UIViewAnimation?

Io uso il metodo UIView animateWithDuration:delay:options:animations:completion:.

Il options: è la parte problematica qui: quando assegno una sola opzione (ad esempio UIViewAnimationOptionCurveEaseInOut) tutto funziona bene.

Cosa succede se si desidera assegnare più opzioni alla stessa animazione? Come lo posso fare?

ho provato il seguente codice, ma la parte options: risultato essere completamente ignorato :

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

era solo una prova e non ha funzionato. Quale sintassi dovrei usare qui?

Grazie per qualsiasi aiuto in anticipo.

risposta

51

Objective-C

options:(UIViewAnimationOptionAllowUserInteraction | 
          UIViewAnimationOptionCurveEaseInOut) 

Swift

In Swift UIViewAnimationOptions è un Option set type e più opzioni possono essere passate modo seguente:

options:[.AllowUserInteraction, .CurveEaseInOut] 
+0

Ero sicuro che sarà facile. Grazie, Vladimir. Спасибо. –

+0

Qual è la risposta per Swift? Non gli piace il '|' operatore apparentemente. – MarqueIV

2

Giusto per aggiungere il motivo sembra che il compilatore abbia ignorato le opzioni fornite ma non l'ha fatto t genera un errore perché la sintassi che si è tentato fa uso dell'operatore virgola che è spesso trascurato in C. Essenzialmente

(UIViewAnimationOptionAllowUserInteraction, UIViewAnimationOptionCurveEaseInOut) 

tels il compilatore di scartare la prima opzione e assegnare il valore dopo la virgola. Nel caso più generale, viene valutato il primo argomento dell'operatore virgola, ma il risultato viene scartato.