Siempre pensé que Core Animation realiza animaciones en el fondo. Cuando ejecuta este código, mis interacciones de interfaz de usuario se bloquean hasta que finalice la animación:¿Por qué es -animateWithDuration: delay: options: animations: completion: blocking the UI?
[UIView animateWithDuration:4.5
delay:0
options:options
animations:^{
oldView.alpha = 0;
newView.alpha = 1;
}
completion:^(BOOL finished) {
if (finished) {
[oldView removeFromSuperview];
}
}];
Como se puede ver la duración es larga por lo que es claramente visible que las interacciones de interfaz de usuario están bloqueados, mientras que la animación.
La interacción de la interfaz de usuario comienza a bloquearse cuando comienza la animación y finaliza para bloquearse cuando finaliza la animación.
¿Hay alguna manera de iniciar una animación UIView simultáneamente para que las interacciones de la interfaz de usuario no estén bloqueadas?
EDIT para aclarar: sé que la interfaz de usuario está bloqueada porque no puedo interactuar con ningún control en la pantalla por qué esta animación se está ejecutando. Esos otros controles no están relacionados con lo que se está animando y no están en la misma rama en la jerarquía de vista. Toda la interfaz de usuario se bloquea cuando se ejecuta esta animación. Cuando lo ajusto a 10 segundos, la IU se bloquea durante 10 segundos mientras se ejecuta la animación. Probado con iOS 4.2 en el iPhone 4.
¿Cómo sabes que está bloqueado? A menos que una vista tenga un alfa de cero, todas las vistas detrás de ella tienen una interacción deshabilitada. – CodaFi
Actualizó la pregunta con una aclaración. –