CGAffineTransformMakeRotation перед анимацией CABasic - PullRequest
3 голосов
/ 19 октября 2010

Я выполняю вращение UIImageView на месте перед выполнением анимации вращения:

// rotate to the left by 90 degrees
someView.transform = CGAffineTransformMakeRotation((-0.5)*M_PI);

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

- (void)rotateIndicatorToAngle: (UIView *)view angle: (NSNumber *)angleInDegrees
{
    CALayer *layer = view.layer;
    CGFloat duration = 5.0;
    CGFloat radians = [self ConvertDegreesToRadians: [angleInDegrees floatValue]];
    CABasicAnimation* rotationAnimation;
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotationAnimation.toValue = [NSNumber numberWithFloat: radians];
    rotationAnimation.duration = duration;
    rotationAnimation.cumulative = YES;
    rotationAnimation.repeatCount = 1.0;
    rotationAnimation.removedOnCompletion = NO;
    rotationAnimation.fillMode = kCAFillModeForwards;
    rotationAnimation.timingFunction = [CAMediaTimingFunction
functionWithName:kCAMediaTimingFunctionEaseOut];

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

Что дает?

Ответы [ 2 ]

4 голосов
/ 19 октября 2010

rotationAnimation.cumulative = YES;

Вы пытались использовать rotationAnimation.additive = YES; вместо кумулятивного?

2 голосов
/ 19 октября 2010

Вы можете использовать методы класса из UIView, чтобы легко анимировать ваше представление:

[UIView beginAnimation: @"Rotate" context: nil];
[UIView setAnimationDuration: 5.0f];
[UIView setAnimationCurve: UIViewAnimationCurveEaseOut];

CGFloat radians = [self ConvertDegreesToRadians: [angleInDegrees floatValue]];
view.transform = CGAffineTransformMakeRotation(radians);

[UIView commitAnimation];

Это то, что я использую большую часть времени, нет необходимости использовать слои.

ОБНОВЛЕНИЕ: я имею в виду, мне проще не использовать слои в этом случае, не имеет уничижительного значения при использовании слоев.

...