Я использую блоки анимации UIView для анимации свойств CALayer (в данном случае backgroundColor) на нескольких слоях на экране одновременно.
Все слои непрозрачны, и я анимирую все в одном блоке, по сути, так:
[UIView beginAnimations:@"outer" context:nil];
float duration = .25;
float offset = 0.0;
for( NSArray *viewsInPass in viewQueue ) {
for( UIView *innerView in viewInPass ) {
[UIView beginAnimations:@"inner" context:nil];
[UIView setAnimationDelay:offset];
[UIView setAnimationDuration:duration];
[innerView.layer setBackgroundColor:[newColor CGColog]];
[UIView commitAnimations];
}
offset += duration;
}
[UIView commitAnimations];
Как только у этого есть 4-5 одновременных слоев, анимирующих их цвет фона, это становится очень изменчивым, и устройство фактически начинает пропускать свою скорость рендеринга полностью и просто останавливается до конца оставшихся анимаций. Все виды не перекрываются, и все они непрозрачны и обычно имеют размер около 20x20 пикселей.
Я был немного шокирован тем, насколько это бесполезно, особенно после прочтения очень многих приятных вещей о Quartz 2D и т. Д. Я чувствую, что, должно быть, здесь упускаю что-то фундаментальное!
Помощь!