У меня есть пользовательский UIView, чтобы показать черепичное изображение.Масштабирование UIView во время анимации
- (void)drawRect:(CGRect)rect
{
...
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToRect(context,
CGRectMake(0.0, 0.0, rect.size.width, rect.size.height));
CGContextDrawTiledImage(context, imageRect, imageRef);
...
}
Теперь я пытаюсь анимировать изменение размера этого вида.
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3];
// change frame of view
[UIView commitAnimations];
Что бы я ожидал, это плиточный участок только для роста, оставляя размеры плитки постоянными. Вместо этого происходит то, что в то время как область растет, исходное содержимое представления масштабируется до нового размера. По крайней мере, во время анимации. Так что в начале и в конце анимации все хорошо. Во время анимации плитки искажаются.
Почему CA пытается масштабировать? Как я могу предотвратить это? Что я упустил?
Кажется, это связано с содержимым contentMode. Но установка UIViewContentModeLeft на самом деле не решает его. Затем он больше не масштабируется, а сразу появляется новый размер кадра. Установка его в UIViewContentModeRedraw, похоже, вообще не вызывает drawRect во время анимации. – tcurdt