我注意到使用UIView类方法的UIView动画似乎或多或少地使程序“暂停”直到它们完成。
有没有办法让动画开始,例如,持续3秒,当它是动画时,程序的其他方面仍在运行,接受触摸事件等?
答案 0 :(得分:4)
是的,UIKit默认阻止动画期间的交互。要覆盖,请设置UIViewAnimationOptionAllowUserInteraction
:
[UIView animateWithDuration:0.3 delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
// ...
} completion:NULL];
答案 1 :(得分:1)
UIKit不是线程安全的,所以所有这样的动画都必须在主线程上发生 - 而不是在后台线程上。引用Apple文档:
<强>线程强>
考虑因素操作 到您的应用程序的用户界面 必须发生在主线程上。从而, 你应该总是调用方法 从运行的代码中获取UIView类 您的应用程序的主线程。 这可能不是严格的唯一一次 必要的是在创建视图时 对象本身;但所有其他 操作应该发生在主要的 线程。