【发布时间】:2012-04-15 13:54:26
【问题描述】:
我一直认为 Core Animation 在背景上执行动画。当我运行此代码时,我的 UI 交互会被阻止,直到动画结束:
[UIView animateWithDuration:4.5
delay:0
options:options
animations:^{
oldView.alpha = 0;
newView.alpha = 1;
}
completion:^(BOOL finished) {
if (finished) {
[oldView removeFromSuperview];
}
}];
如您所见,持续时间很长,因此可以清楚地看到 UI 交互在制作动画时被阻止。
UI交互在动画开始时开始被阻塞,在动画结束时被阻塞。
有没有办法同时启动一个 UIView 动画,这样 UI 交互就不会被阻塞?
编辑澄清:我知道 UI 被阻止,因为我无法与屏幕上的 任何 控件交互,为什么该动画正在运行。这些其他控件与正在动画的内容无关,并且不在视图层次结构中的同一分支上。此动画运行时,整个 UI 都被阻止。当我将其设置为 10 秒时,UI 会在动画运行时被阻止 10 秒。在 iPhone 4 上使用 iOS 4.2 测试。
【问题讨论】:
-
你怎么知道它被屏蔽了?除非一个视图的 alpha 为零,否则它后面的所有视图都会禁用交互。
-
用澄清更新了问题。
标签: iphone ios ipad uikit core-animation