2014-07-17 21 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

答案与代码应该更具描述性 –