Как согласовать время анимации на нескольких CALayers? - PullRequest
0 голосов
/ 09 июня 2010

Привет, у меня есть два CALayers (* layer1 и * layer2).Я хочу запустить анимацию на layer2 по истечении 50% времени анимации layer1.Как мне этого добиться?

Я пытался использовать CAAnimationGroup, но это работает только для анимаций в том же слое.Я нашел обходной путь, в котором вы должны сначала добавить отложенную анимацию в группу и установить свойство beginTime, но это кажется мне немного хакерским, и я хотел бы знать, есть ли правильный способ достижения того, чего я хочу.1003 *

Спасибо!

1 Ответ

0 голосов
/ 16 июня 2010

Метод добавления второй анимации в группу выглядит как хак, но он работает и вполне приемлем.Вместо этого вы можете сделать вместо этого вызов -performSelector: withObject: afterDelay .Как то так:

- (void)startFirstAnimation;
{
    CGFloat duration = 10.0;

    CABasicAnimation *firstAnim = 
             [CABasicAnimation animationWithKeyPath:@"position"];
    [firstAnim setFromValue:
             [NSValue valueWithCGPoint:CGPointMake(30.0f, 30.0f)]];
    [firstAnim setToValue:
             [NSValue valueWithCGPoint:CGPointMake(200.0f, 200.0f)]];
    [firstAnim setDuration:duration];

    [firstLayer addAnimation:firstAnim forKey:nil];

    [self performSelector:@selector(startSecondAnimation) 
               withObject:nil afterDelay:duration/2.0]; 
}

- (void)startSecondAnimation;
{
    CABasicAnimation *secondAnim = 
             [CABasicAnimation animationWithKeyPath:@"position"];
    [secondAnim setFromValue:
             [NSValue valueWithCGPoint:CGPointMake(100.0f, 30.0f)]];
    [secondAnim setToValue:
             [NSValue valueWithCGPoint:CGPointMake(200.0f, 200.0f)]];
    [secondAnim setDuration:5.0];

    [secondLayer addAnimation:secondAnim forKey:nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...