UIView 核心动画在 viewdidLoad 方法中不起作用?

Posted

技术标签:

【中文标题】UIView 核心动画在 viewdidLoad 方法中不起作用?【英文标题】:UIView Core Animation not working in viewdidLoad method? 【发布时间】:2014-07-17 05:10:56 【问题描述】:

我是 ios 开发新手,在我的项目中使用核心动画。我希望我的 UIVIew 默认在主视图之外,并在条件下为它们设置动画。当我在按钮方法中调用它时,它工作得很好,但是当我在 viewdidload 中调用它时,程序启动时什么也没有发生。

其次,我想在我的项目中多次执行此动画 像这样:1 从右侧(屏幕外)向左(屏幕上某处)设置动画,然后是它们下方的 1 和 2,然后是 1 2 和 3,最后是 1 2 3和4.谁能指导我如何做到这一点?请帮忙

//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];


【问题讨论】:

viewDidLoad 太早,可以在 viewWillAppear 方法中调用。 尝试从- (void)viewDidAppear:(BOOL)animated 方法调用animate 方法并使用基于块的动画方法进行动画 @Shan ViewDidAppear 工作得非常好 :) 谢谢各位...你能在我的第二期中指导我吗... @NasirKhan 我认为此链接将帮助您解决动画问题。 ***.com/questions/7840261/… @Student 让我试试这些东西...到时候会告诉你... 【参考方案1】:

请尝试调用 [self animate]; 延迟 1 秒的视图加载此方法。

【讨论】:

【参考方案2】:

试试这个...

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

);

【讨论】:

虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。

以上是关于UIView 核心动画在 viewdidLoad 方法中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

UIView 动画,它们是不是使用“核心动画”

iOS开发UI篇—核心动画(UIView封装动画)

iOS开发UI篇—核心动画(UIView封装动画)

iOS核心动画以及UIView动画的介绍

与内置 UIView 动画等效的核心动画

UIView 核心动画在 viewdidLoad 方法中不起作用?