Как повернуть вид в 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 градусов?