Iphone UIView动画块未等待
我有以下代码:Iphone UIView动画块未等待,iphone,objective-c,uiviewanimation,Iphone,Objective C,Uiviewanimation,我有以下代码: [UIView animateWithDuration:0.8 animations:^{ [self methodToRun]; } completion:^(BOOL finished){
[UIView animateWithDuration:0.8
animations:^{
[self methodToRun];
}
completion:^(BOOL finished){
[self anotherMethod];
}];
虽然methodToRun中有一些东西,但应用程序并没有等待0.8秒,而是继续运行另一种方法。有什么方法可以让我在运行第二位之前等待0.8秒吗?您可以添加对
[NSTimer performSelector:withObject:afterDelay]
的调用,而不依赖于完成参数 不要误用那样的动画块。如果您确实想要延迟,请使用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];
});
值得注意的是,Andrew被告知使用
animateWithDuration:animations:completion:
来说明他正在处理的问题。如果你愿意的话,他可能会更深入地解释为什么这个答案会构成“误用”一个动画块。我一直在等他提供更多细节,但看起来他已经找到了答案。这不是对动画块的技术误用,我相信sudo只是指is会混淆预期控制流的事实。通常情况下,动画块中同步的内容会非常本地化或自解释。调用任意方法可能会使代码管理更加困难。在这两种方法中具体执行的是什么,您如何确定完成块没有等待?