2014-09-17 3 views
1

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

- (IBAction)btnRotate:(id)sender 
{ 
    [UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionTransitionNone animations:^ 
    { 
     CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI); 
     self.image.transform = transform; 
    } completion:NULL]; 
} 

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

ответ

2

ли это:

CGAffineTransform transform = self.image.transform; 
CGAffineTransform transform_new = CGAffineTransformRotate(transform, M_PI); 
self.image.transform = transform_new; 

вместо:

CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI); 
self.image.transform = transform; 

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

0

Проблема заключается в том, что вы только устанавливаете M_PI в качестве преобразования, преобразование применяется к исходному изображению, поэтому независимо от того, сколько раз вы нажимаете кнопку, всегда будет 90. Что вам нужно сделать, это получить текущий преобразование и добавьте его к преобразованию, которое вы хотите применить. Таким образом, при каждом нажатии кнопки трансформация будет идти от 90-> 180-> 270 и т.д.

+0

Можете ли вы мне помочь? Я новичок в анимации –

0

Этот код поможет вам.

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionTransitionNone animations:^ 
{ 
    CGFloat angle = [(NSNumber *)[self.image valueForKeyPath:@"layer.transform.rotation.z"] floatValue]; 

    CGAffineTransform transform = CGAffineTransformMakeRotation(angle+M_PI_2); 
    self.image.transform = transform; 
} completion:NULL]; 
Смежные вопросы