¿Por qué las animaciones de iOS son más lentas la primera vez que se ejecutan?

Me parece que la primera vez que ejecuto una animation (animando el marco de una UIView, o la position de un CALayer, etc.) es bastante entrecortado, y las animaciones posteriores son suaves.

¿Qué estaría causando esto, y hay alguna manera de precacheear la animation?

Nota: esta pregunta es bastante similar a esta: las animaciones de UIImageView se retrasan en la primera ejecución , pero los UIImages no se utilizan en mis animaciones.

Suponiendo que está utilizando [UIImage imageNamed: @"herp.png"] la image se almacenará en caching. Si la image se dibuja mucho, se desempaquetará en la memory, de lo contrario, hará una carga perezosa de la image y provocará un tartamudeo.

Si tienes un TextField , que supongo que es lo que recibe tu input de usuario. Utilice los methods UITextFieldDelegate Did and not Should

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
//Do textfield animations and other view animations here

}

No hagas tus animaciones en;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
//Don't do textfield animations and other view animations here
//This is where the system does its own animations; raising the keyboard, etc
}

Ejecutarlo en viewDidAppear , en lugar de viewWillAppear . El almacenamiento en caching debe ocurrir después de que la image apareció, y debería ser similar para el usuario.