Вращение CALayer от начального угла - PullRequest
3 голосов
/ 03 июня 2009

Я хочу вращать слой непрерывно, используя byValue, но я не могу заставить его работать правильно. Я хочу вращаться на 6 градусов каждую секунду, чтобы сделать полный поворот за 60 секунд.

Если начальный поворот слоя равен 0, все в порядке.

Проблема в том, когда я пытаюсь установить начальный fromValue. Если я установлю fromValue на 90 градусов, анимация повернется с 90 на 90 + 6, затем перейдет к 90+ (90 + 6), анимируется и снова прыгнет.

Есть идеи?

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

animation.fromValue = [NSNumber numberWithDouble:M_PI_2];
animation.byValue = [NSNumber numberWithDouble:6.0f*M_PI/180.0f];
animation.toValue = nil;

animation.fillMode = kCAFillModeForwards;
animation.cumulative = YES;
animation.additive = NO;
animation.repeatCount = 10000;
animation.removedOnCompletion = YES;
animation.duration = 1.0;
[myLayer addAnimation:animation forKey:@"transform"];

1 Ответ

8 голосов
/ 03 июня 2009

Это работает для меня:

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath: @"transform"];
CATransform3D transform = CATransform3DMakeRotation (DegreesToRadians (90), 0, 0, 1);
animation.toValue = [NSValue valueWithCATransform3D: transform];
animation.duration = 60;
animation.cumulative = NO;
animation.repeatCount = 10000;
animation.removedOnCompletion = YES;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...