UIView动画块不等待

时间:2011-06-13 17:31:15

标签: iphone objective-c uiviewanimation

我有这段代码:

[UIView animateWithDuration:0.8
                             animations:^{ 
                                 [self methodToRun];
                             } 
                             completion:^(BOOL finished){
                                 [self anotherMethod];
                             }];

虽然methodToRun中有东西,但应用程序不会等待0.8秒并继续运行anotherMethod。有没有什么方法可以让我在运行第二位之前等待0.8秒?

2 个答案:

答案 0 :(得分:9)

不要滥用像这样的动画块。如果你真的想要延迟,请使用Ken链接的方法,甚至更简单的方法是使用GCD(iOS 4+)。

以下是使用您在问题中使用的0.8延迟的示例:

dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 0.8); 
dispatch_after(delay, dispatch_get_main_queue(), ^(void){
    [self anotherMethod];
});

答案 1 :(得分:4)

您可以添加对[NSTimer performSelector:withObject:afterDelay]的调用,而不是依赖于完成参数。