首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么-animateWithDuration:delay:options:animations:completion:会阻塞UI?

为什么-animateWithDuration:delay:options:animations:completion:会阻塞UI?
EN

Stack Overflow用户
提问于 2012-04-01 19:10:22
回答 2查看 2.7K关注 0票数 7

我一直认为核心动画是在后台进行动画的。当我运行此代码时,我的UI交互将被阻塞,直到动画完成:

代码语言:javascript
复制
[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秒。用iOS 4.2在iPhone 4上进行测试。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-01 19:23:00

查看UIView的文档,我在该方法的讨论部分中找到了以下内容:

在动画期间,为动画视图临时禁用用户交互。(在iOS 5之前,整个应用程序都禁用用户交互。)如果希望用户能够与视图交互,请在options参数中包括UIViewAnimationOptionAllowUserInteraction常量。

因此,如果要继续允许用户交互,则必须在options参数中设置此常量。

票数 19
EN

Stack Overflow用户

发布于 2012-04-01 19:22:15

文档是您的朋友:)

UIView类引用

动画下:动画:

“在动画期间,对于被动画的视图,用户交互被暂时禁用。(在iOS 5之前,整个应用程序都禁用用户交互。)

当然,对于动画视图下的所有视图。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9967384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档