2017-02-15 7 views
1

Я пытаюсь повернуть изображение несколько раз (360) с интервалом. Я нашел этот ответ (Image rotation in iOS), кажется, все в порядке, но он не работает для меня. Когда я загружаю VC, я вижу небольшое движение, но это все. Есть идеи? Код, я использую:IOS/Objective-C: 360 Image Rotation Issue

- (void)viewDidAppear:(BOOL)animated { 
    [self.compass setTransform:CGAffineTransformMakeRotation(10*(M_PI/360))]; 


    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(rotation) userInfo:nil repeats:YES]; 

} 
-(void)rotation{ 
    [self.compass setTransform:CGAffineTransformMakeRotation(10*(M_PI/360))]; 

} 

EDIT:

- (void)viewDidAppear:(BOOL)animated { 
    [self.compass setTransform:CGAffineTransformMakeRotation(10*(M_PI/360))]; 


    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(rotation) userInfo:nil repeats:YES]; 

} 
-(void)rotation{ 
    [self.compass setTransform:CGAffineTransformMakeRotation(10*(M_PI/360))]; 
    CGAffineTransform transform = CGAffineTransformRotate(self.compass.transform, 10*(M_PI/360)); 
    [self.compass setTransform:transform]; 
} 
+0

Вы должны использовать [UIView animateWithDuration] метод – cpatmulloy

ответ

2

анимировать вращение следующим образом:

[UIView animateWithDuration:0.3 animations:^{ 
     compas.transform = CGAffineTransformMakeRotation(M_PI/2); 
    }]; 
+0

также спасибо за ответы, но вращение разве непрерывно: вращение метод: - (недействительными) вращение { [self.compass setTransform: CGAffineTransformMakeRotation (10 * (M_PI/360))]; CGAffineTransform transform = CGAffineTransformRotate (self.compass.transform, 180 * (M_PI/360)); [self.compass setTransform: transform]; } } Таким образом, компас просто перемещает 180 дгс и остается таким образом ... – FuManchu

+0

ОК, я неправильно понял из-за 'повторов: ДА', я обновил свой ответ –

+0

Нет, его то же самое, Константин, я сделаю так, может видеть настоящий код – FuManchu

0

Ваше вращение происходит, но это просто очень малое вращение: 10 * пи/360 радиан равен 5 градусов. Pi радианы равны 180 градусам, поэтому, если вы хотите повернуть его на 360 градусов, поверните 2 * M_PI.

Обратите внимание, что в настоящее время вы не оживляете движение, и когда вы просто вращаете представление без анимации, он будет выглядеть точно так же, как когда это преобразование было еще CGAffineTransformIdentity. Для анимации перехода, посмотрите на UIView анимации: https://www.raywenderlich.com/2454/uiview-tutorial-for-ios-how-to-use-uiview-animation

0

Вам нужно добавить предыдущий поворот в а, в противном случае вы вращаясь под тем же углом снова и снова:

CGAffineTransformMakeRotation(NewAngle + 10*(M_PI/360)) 

 Смежные вопросы

  • Нет связанных вопросов^_^