Todos y cada uno de los libros afirman que hay animaciones implícitas en CALayer. Sin embargo, cada vez que quería verificar eso hasta el momento, termino con un ajuste rápido al valor establecido. Sin animación en absoluto.¿Cuándo exactamente ocurren las animaciones implícitas en iOS?
Aquí hay un ejemplo en un proyecto donde nada más está sucediendo. Todo lo que hago es crear una vista, luego obtener su instancia CALayer y hacer algo que debe ser animado implícitamente.
[theLayer setValue:[NSNumber numberWithFloat:M_PI * 1.1] forKeyPath:@"transform.rotation.z"];
Otra:
CGRect currentBounds = theLayer.bounds;
currentBounds.size.width += 120.f;
[self.animatedLayer setBounds:currentBounds];
la vista contiene algunas cosas, por supuesto, para que pueda ver el cambio. Veo el cambio visual, pero como un chasquido. Sin animación en absoluto.
Entonces, o todos esos libros son incorrectos y tienen en mente el conocimiento anterior de Mac OS X cuando escribo sobre Core Animation y animaciones implícitas, o estoy haciendo algo mal. ¿Alguien puede proporcionar un ejemplo de trabajo que demuestre animaciones implícitas en el iPhone?
¡Excelente respuesta! Tengo curiosidad, ¿de dónde sacaste toda esta información detallada? Revisé tantos libros y fuentes, pero carecen de estos detalles. –
Mayormente de prueba y error. Si reemplaza '-actionForLayer: forKey:' en una subclase de UIView, puede desconectar los resultados de la llamada a super y correlacionar eso con si hay un bloque de animación activo. También tiene sentido si lo piensas: UIView es el delegado de CALayer, y '-actionForLayer: forKey:' es el lugar apropiado para engancharte si deseas inhabilitar las animaciones implícitas. –
Tiene mucho sentido. ¡Gracias! –