UIView动画延迟

问题描述:

我注意到,使用UIView类方法的UIView动画似乎或多或少地把程序放在“暂停”上直到它们完成。UIView动画延迟

有没有办法让动画开始,例如,持续3秒,当它是动画时,程序的其他方面仍在运行,接受触摸事件等?

+0

那些其他方面可以在另一个线程(而不是默认UI线程等)运行,但我需要看到你的代码提示别的。 – Tom 2011-06-13 01:07:58

+0

在动画过程中线程和运行循环都不会被阻塞,只需触摸事件即可。 (并且仅在默认情况下) – 2011-06-13 01:20:29

+0

啊,好的。这可能是我所看到的。那么在动画过程中你无法接收到触摸事件?如果一个小UIView在几秒钟内进行阿尔法淡入淡出,程序将不会接受屏幕上其他任何地方的触摸事件? – johnbakers 2011-06-13 01:22:04

是的,UIKit默认阻止动画过程中的交互。要覆盖,设置UIViewAnimationOptionAllowUserInteraction

[UIView animateWithDuration:0.3 delay:0.0 
        options:UIViewAnimationOptionAllowUserInteraction 
       animations:^ 
{ 
    // ... 
} completion:NULL]; 
+0

谢谢先生。它做到了。 – johnbakers 2011-06-13 01:57:18

UIKit不是线程安全的,所以所有这些动画必须在主线程上发生 - 而不是在后台线程上。为了从苹果文档引用:

线程

注意事项手法 到应用程序的用户界面 必须在主线程上发生。因此, 您应该始终调用 中的UIView类的方法,该代码在 应用程序的主线程中运行。 唯一需要的时候可能不是严格的 是创建视图 对象本身;但所有其他的 操作应该发生在主线程 线程上。