2010-10-19 3 views
3

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

// 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"]; 
} 

Что дает?

+0

привет, я пытаюсь использовать ваш код, но после вызова этого метода мой UIView перемещается в верхний левый угол моего супер-представления, а затем center.x и y становятся отрицательными. Зачем? –

ответ

4

rotationAnimation.cumulative = YES;

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

2

Вы можете использовать методы класса 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]; 

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

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

+0

thx за советом, но не решением моей проблемы. Я в основном пытаюсь понять, почему мой пример терпит неудачу. –

+0

ОК, см. Мой комментарий в другом ответе за идею. – jv42