Tengo una UIView personalizada para mostrar una imagen de mosaico.Escalamiento de UIView durante la animación
- (void)drawRect:(CGRect)rect
{
...
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToRect(context,
CGRectMake(0.0, 0.0, rect.size.width, rect.size.height));
CGContextDrawTiledImage(context, imageRect, imageRef);
...
}
Ahora estoy tratando de animar el cambio de tamaño de esa vista.
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
// change frame of view
[UIView commitAnimations];
Lo que esperaría es que el área de baldosas solo crezca, dejando los tamaños de baldosas constantes. Lo que sucede en cambio es que mientras el área crece, el contenido original de la vista se escala al nuevo tamaño. Al menos durante la animación Así que al principio y al final de la animación todo es bueno. Durante la animación, las fichas están distorsionadas.
¿Por qué CA intenta escalar? ¿Cómo puedo evitar que lo haga? ¿Qué me perdí?
Parece estar relacionado con el modo de contenido de la vista. Pero configurarlo en UIViewContentModeLeft tampoco lo resuelve realmente. Entonces ya no se escalará, sino que pasará al nuevo tamaño de fotograma de inmediato. Configurarlo en UIViewContentModeRedraw no parece llamar a drawRect en absoluto durante la animación. – tcurdt