¿Qué son los métodos de animación basados en bloques en iPhone OS 4.0?
ios4 uiview (3)
Estoy tratando de implementar un juego usando el iPhone OS 4.0 (iOS4?) SDK. En las versiones anteriores del SDK, he estado usando [UIView beginAnimations: context:] y [UIView commitAnimations] para crear algunas animaciones. Sin embargo, cuando miro la documentación de las funciones en 4.0, veo este comentario.
El uso de este método no se recomienda en iPhone OS 4.0 y versiones posteriores. Deberías usar los métodos de animación basados en bloques en su lugar.
Puede encontrarlo aquí: http://developer.apple.com/iphone/library/documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/clm/UIView/commitAnimations
Mi pregunta es, ¿qué son las animaciones basadas en bloques en iPhone OS 4.0? Pensé que las funciones beginAnimations: context: y commitAnimations se usaban para crear bloques de animación.
Aquí hay un ejemplo muy simple. El código simplemente desvanece un UIView y lo oculta después de la animación:
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^ {
bgDisplay.alpha = 0.0;
}
completion:^(BOOL finished) {
bgDisplay.hidden = YES;
}];
o en diferentes formatos:
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^ {
bgDisplay.alpha = 0.0;
} completion:^(BOOL finished) {
bgDisplay.hidden = YES;
}];
He publicado un ejemplo en mi blog :
CGPoint originalCenter = icon.center;
[UIView animateWithDuration:2.0
animations:^{
CGPoint center = icon.center;
center.y += 60;
icon.center = center;
}
completion:^(BOOL finished){
[UIView animateWithDuration:2.0
animations:^{
icon.center = originalCenter;
}
completion:^(BOOL finished){
;
}];
}];
El código anterior animará un UIImageView * (icono) en una animación de 2 segundos. Una vez completado, otra animación moverá el ícono a su posición original.
Si sigues ese enlace y te desplazas un poco hacia arriba, verás nuevos métodos animados en ios4.
animateWithDuration:animations:
animateWithDuration:animations:completion:
animateWithDuration:delay:options:animations:completion:
También hay algunos métodos de transición relacionados. Para cada uno de estos, el argumento de animaciones es un objeto de bloque :
animaciones
Un objeto de bloque que contiene los cambios para comprometerse con las vistas. Aquí es donde modifica mediante programación las propiedades animables de las vistas en su jerarquía de vistas. Este bloque no toma parámetros y no tiene valor de retorno. Este parámetro no debe ser NULL.
Los objetos de bloque son parte de la programación concurrente