2014-07-17 41 views
0

我是IOS開發新手,在我的項目中使用核心動畫。我希望我的UIVIew默認在主視圖之外並且在條件下動畫它們。當我在按鈕方法中調用它時,它工作得很好,但是當我在viewdidload中調用它時,程序啓動時不會發生任何事情。其次我想在我的項目中多次執行此動畫像這樣:1從右側(屏幕外)向左側(屏幕上某處)的動畫,然後是1和2,然後是1 2和3,最後是1 2和3 1 2 3和4.任何一個人可以指導我如何做到這一點? plz helpUIView核心動畫不能在viewdidLoad方法中工作?

//1 
//1 2 
//1 2 3 
//1 2 3 4 


- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

[self animate]; 

} 

-(IBAction)move:(id)sender 
{ 
[self animate]; 
} 


-(void) animate { 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationRepeatCount:1]; 
[UIView setAnimationRepeatAutoreverses:YES]; 
CGPoint pos; 
pos.x = 241.0f; 
pos.y = 20.0f; 
mover.center = pos; 
[UIView commitAnimations]; 

} 
+5

viewDidLoad中太早,你可以通過調用'從animate'方法調用這裏面viewWillAppear中的方法。 – Yogendra

+0

試' - (void)viewDidAppear:(BOOL)animated'方法,並且還使用基於塊的動畫方法來製作動畫 –

+0

@Shan ViewDidAppear完美無缺:)謝謝你們......你們可以在我的第二期中引導我... –

回答

0

請嘗試撥打電話[self animate];這種方法在1秒的延遲視圖上加載。

0

試試這個...

dispatch_async(dispatch_get_main_queue()^ {

[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationRepeatCount:1]; 
    [UIView setAnimationRepeatAutoreverses:YES]; 
    CGPoint pos; 
    pos.x = 241.0f; 
    pos.y = 20.0f; 
    mover.center = pos; 
    [UIView commitAnimations]; 

}); 
+0

雖然這代碼可以回答這個問題,提供關於爲什麼和/或這個代碼如何回答這個問題提高了其長期價值的附加背景。 – user5226582

+0

答案與代碼應該更具描述性 –