2017-02-03 6 views
0

У меня есть код для анимирования по диагонали.Вращение NSButton не работает

CABasicAnimation *rightAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
[rightAnimation setToValue:[NSNumber numberWithFloat:160]]; 
[rightAnimation setBeginTime:0.0]; 
[rightAnimation setDuration:0.4]; 


CABasicAnimation *fall = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"]; 
[fall setToValue:[NSNumber numberWithFloat:-20]]; 
[fall setBeginTime:0.1]; 
[fall setDuration:0.3]; 

//DOESN'T WORK 
CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.translation.z"]; 
[rotate setToValue:[NSNumber numberWithFloat:DEGREES_RADIANS(30)]]; 
[rotate setBeginTime:0.0]; 
[rotate setDuration:0.4]; 

CAAnimationGroup *group = [CAAnimationGroup animation]; 
[group setDuration:0.4]; 
[group setAnimations:[NSArray arrayWithObjects:rightAnimation, fall, rotate, nil]]; 

[submitButton.layer addAnimation:rotate forKey:nil]; 

, который отлично работает отдельно от меня также хотелось бы, чтобы кнопка вращалась на 30 градусов. Но по какой-то странной причине этого не происходит, как получилось?

ответ

1

Измените эту строку:

CABasicAnimation *rotate = [CABasicAnimation animationWithKeyPath:@"transform.translation.z"]; 

к этому:

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

Это должно исправить вашу проблему.

0

Я никогда не видел «DEGREES_RADIANS», я считаю, что вы можете на самом деле означать «градусов». Если да, то следующий код должен быть достаточным:

rotationAnimation.toValue = [NSNumber numberWithFloat:degreesToRadians(30)];