Ротация iphone UIImageView

Может ли кто-нибудь сказать мне, как поворачивать изображение в круговом движении

Ответ 1

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

- (void) runSpinAnimationWithDuration:(CGFloat) duration;
{
    CABasicAnimation* rotationAnimation;
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
    rotationAnimation.duration = duration;
    rotationAnimation.cumulative = YES;
    rotationAnimation.repeatCount = 1.0; 
    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];

    [myView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}

Ответ 2

на основе ответа mahboudz, вы можете установить бесконечное вращение, установив:
rotationAnimation.repeatCount = HUGE_VALF;

Ответ 3

Если вы имеете в виду: "Как вы делаете изображение по круговой траектории?", тогда псевдокод будет выглядеть следующим образом:

image.x = circleCentre.x + cos(angle) * circleRadius;
image.y = circleCentre.y + sin(angle) * circleRadius;
angle += 5;

Ответ 4

Этот вопрос задает одно и то же, хотя и другими словами. Ответы на этот вопрос, а также в этот вопрос должны обеспечить способ анимации UIView (UIImageView - просто подкласс этого) о его центре на 360 градусов или больше.

Ответ 5

Создание анимации

- (CABasicAnimation *)spinAnimationWithDuration:(CGFloat)duration clockwise:(BOOL)clockwise repeat:(BOOL)repeats
{
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    anim.toValue = clockwise ? @(M_PI * 2.0) : @(M_PI * -2.0);
    anim.duration = duration;
    anim.cumulative = YES;
    anim.repeatCount = repeats ? CGFLOAT_MAX : 0;
    return anim;
}

Добавьте его в представление

CABasicAnimation *animation = [self spinAnimationWithDuration:1.0 clockwise:YES repeat:YES];
[self.spinningView.layer addAnimation:animation forKey:@"rotationAnimation"];

Как этот ответ отличается от ответа @mahboudz? У вас будет более чистый код, если большинство ваших функций возвращают объекты, а не просто манипулируют некоторыми объектами здесь и там.