Как повернуть вид в 3d на 360 градусов?

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

animation = [CABasicAnimation animationWithKeyPath:@"transform"];
transform = CATransform3DMakeRotation(3.14f, 1.0f, 1.0f, 1.0f);  
value = [NSValue valueWithCATransform3D:transform]; 
[animation setToValue:value];
[animation setAutoreverses:YES]; 
[animation setDuration:0.9];
[[rotatBall layer] addAnimation:animation forKey:@"180"];  //rotatBall is a view

Другими словами, он совершает вращение вперед и назад. Как вращать это непрерывно.... Пожалуйста, помогите...

2 ответа

Решение

Это немного сложно, но вы можете найти это в документации.
Чтобы вращать его непрерывно, сначала нужно установить toValue затем установите количество повторений анимации на HUGH_VALF (определено в математике).

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

    transform = CATransform3DMakeRotation(1.0f, 1.0f, 1.0f, 1.0f);  
    fromValue = [NSValue valueWithCATransform3D:transform];

    transform = CATransform3DMakeRotation(M_PI*2, 1.0f, 1.0f, 1.0f);  
    toValue = [NSValue valueWithCATransform3D:transform];

    animation.fromValue = fromValue;
    animation.toValue = toValue;
    animation.duration = 0.9f; 
    animation.repeatCount = HUGE_VALF;     // HUGE_VALF is defined in math.h so import it
    [rotatBall.layer addAnimation:animation forKey:@"rotation"];

Ваша анимация меняется после завершения, потому что вы установили autoreverses в YES, Это то что autoreverses делает.

Что касается того, почему вы вращаетесь на 180 градусов вместо 360... сколько радиан составляет 360 градусов?

Другие вопросы по тегам