Как я могу добавить неявную анимацию для свойства 'position' CALayer? - PullRequest
0 голосов
/ 11 марта 2012

** Примечание. Это для iOS, а не для OS X, поэтому неявные анимации не устанавливаются автоматически.

Я пытаюсь добавить неявную анимацию в CALayer для свойства position.

Мой (неверный) код такой:

NSMutableDictionary * actions = [self.view.layer.actions mutableCopy ] ;
if ( !actions ) { actions = [ NSMutableDictionary dictionary ] ; }

CABasicAnimation * anim = [ CABasicAnimation animationForKeyPath:@"position" ] ;

[ actions setValue:anim forKey:@"position" ] ;
self.view.layer.actions = actions ;

У меня вопрос: какую анимацию (свойство anim , выше), то есть CABasicAnimation, CATransition, следует использовать для этого сценария и как настроить его?

Grazie

1 Ответ

1 голос
/ 11 марта 2012

Неявные анимации, запускаются просто установкой свойства position (т.е. self.view.layer.position = <new position>;), а Quartz позаботится об остальном, используя текущую настройку CATransaction .

Если вы хотите использовать явную анимацию (которую вы, похоже, пытаетесь сделать), я бы использовал CABasicAnimation и сделал что-то подобное.

    self.view.layer.position = <new position>;
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.duration = <duration>;
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    animation.fromValue = <current position>;
    animation.toValue = <new position>;
    [line addAnimation:animation forKey:@"position"];
...