2017-02-15 95 views
1

我試圖用間隔反覆旋轉圖像(360)。我發現這個答案(Image rotation in iOS),似乎沒問題,但它不適合我。當我加載VC時,我可以看到輕微的移動,但就是這樣。有任何想法嗎?我正在使用的代碼:IOS/Objective-C:360圖像旋轉問題

- (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))]; 

} 

編輯:

- (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 dgs並保持這種方式... – FuManchu

+0

好吧,我誤解因爲'重複:是',我更新了我的答案 –

+0

不,它是一樣的,康斯坦丁,我會編輯所以你可以看到目前的代碼 – FuManchu

0

你的旋轉發生,但它只是一個非常小的旋轉:10 * PI/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))