Одинаково легко анимировать несколько двухмерных объектов одновременно. Есть два способа, которыми вы можете заняться: анимация UIViews или анимация CALayers. В моем тестировании я обнаружил небольшую разницу в производительности при анимации двух (оба, похоже, поддерживают ~ 50 объектов, перемещающихся одновременно в 60 FPS на iPhone).
Для координации анимации серии UIViews, вы хотите, чтобы обернуть любые изменения в геометрии обзора в BEGIN/фиксации блока анимации:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:ANIMATIONDURATIONINSECONDS];
view1.frame = CGRectMake(newX1, newY1, view1Width, view1Height);
view2.frame = CGRectMake(newX2, newY2, view2Width, view2Height);
// Add other views here
[UIView commitAnimations];
Это будет координировать движение двух или более взгляды по прямой линии на новую позицию в течение продолжительности ANIMATIONDURATIONINSECONDS секунд. Если вы хотите, чтобы представления перемещались независимо друг от друга, создайте отдельные блоки анимации для каждого из них.
Для более полного контроля над анимацией или создания кросс-платформенного кода интерфейса Mac/iPhone вы можете использовать CALayers Core Animation. CALayers анимации по умолчанию, поэтому, установив
layer.position = CGPointMake(newX, newY);
ваш слой будет автоматически анимировать в новое положение. Обратите внимание, что по умолчанию положение слоя относительно его центра, вы можете изменить его на нормальную исходную позицию, установив его свойство anchorPoint равным 0,0.
Вы можете координировать анимации слоя с использованием CATransaction:
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:ANIMATIONDURATIONINSECONDS] forKey:kCATransactionAnimationDuration];
layer1.position = CGPointMake(newX1, newY1);
layer2.position = CGPointMake(newX2, newY2);
[CATransaction commit];
Для более продвинутых анимаций, вы можете создать CABasicAnimations и CAKeyframeAnimations и применять те, к вашим слоям, чтобы переместить их по сложным путям с конкретными сроками и ускорения/замедления ,
Какая техника вы используете сейчас, и вы пробовали Core Animation? –
Я использовал преобразования основной анимации на одном представлении пользовательского интерфейса, в котором я центрировал свое изображение. – Skyler