2009-06-03 2 views
3

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

Если начальное вращение слоя равно 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"]; 

ответ

8

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

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;