2010-08-17 9 views
20

Probablemente solo se trate de una sintaxis correcta.¿Cómo puedo definir múltiples opciones para UIViewAnimation?

Uso el método animateWithDuration:delay:options:animations:completion: UIView.

El options: es la parte problemática aquí: cuando se le asigno sólo una opción (por ejemplo UIViewAnimationOptionCurveEaseInOut) todo funciona bien.

¿Qué sucede si quiero asignar opciones múltiples a la misma animación? ¿Cómo puedo hacer eso?

He probado el siguiente código, pero la parte options: resultado ser completamente ignorado :

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

que era sólo una oportunidad y no funcionó. ¿Qué sintaxis debería usar aquí?

Gracias por cualquier ayuda con anticipación.

Respuesta

51

Objective-C

options:(UIViewAnimationOptionAllowUserInteraction | 
          UIViewAnimationOptionCurveEaseInOut) 

Swift

En Swift UIViewAnimationOptions es un Option set type y múltiples opciones pueden pasarse siguiente manera:

options:[.AllowUserInteraction, .CurveEaseInOut] 
+0

Estaba seguro de que será fácil. Gracias, Vladimir. Спасибо. –

+0

¿Cuál es la respuesta para Swift? No le gusta el '|' operador aparentemente. – MarqueIV

2

Sólo para añadir la razón parece que el compilador ignoró las opciones suministradas pero no lo hizo t Lanza un error se debe a que la sintaxis que ha intentado hace uso del operador coma que a menudo se pasa por alto en C. Esencialmente

(UIViewAnimationOptionAllowUserInteraction, UIViewAnimationOptionCurveEaseInOut) 

tels el compilador para descartar la primera opción y sólo asignar el valor después de la coma. En el caso más general, el primer argumento para el operador de coma se evalúa, pero su resultado se descarta.

Cuestiones relacionadas