【问题标题】:(iphone) showing activity indicator before heavy ui updating(iphone) 在大量 ui 更新之前显示活动指示器
【发布时间】:2011-04-01 18:12:10
【问题描述】:

我在进行一些繁重的 ui 更新之前添加活动指示器视图(pushViewController 需要一段时间来加载视图)。

由于某种原因,在新的 viewController 被推送之前,指示器视图不会出现。
(指示器视图会在 viewController 推送动画发生之前显示,
虽然我的意图是在设备在动画之前需要很长时间时显示指示器)

除了将指标视图添加为子视图之外,我还应该做些什么吗?
我已经尝试过 [indicatorView'sSuperview setNeedsDisplay];在 pushViewController 调用之前。

谢谢

【问题讨论】:

    标签: iphone uiactivityindicatorview pushviewcontroller


    【解决方案1】:

    如果长时间运行的操作在 UI 线程上,这将阻塞整个 UI,包括微调器的显示/动画。如果你可以在后台线程上做一些事情,你会更好。如果时间真的被视图布局本身占用了,那么你就有问题了,但我猜大部分时间都被非 UI 活动占用了。随意发布给您带来麻烦的代码,因为没有代码很难诊断问题

    【讨论】:

    • 谢谢,代码很复杂,分布在多个类中。 (它本质上从数据库加载数百个文件,并填充 uiview,并为动画做准备)。在我什至可以准确地安排我正在做的事情之前,我必须先挖掘一下。
    • 我当然明白,但是 db 访问会挂起 ui 线程。您的选择几乎是拥有一个无响应的 ui 线程,或者将其拆分。祝你好运!
    • 基本上,如果您在 UI 线程上加载某些内容,则没有任何事件能够通过视图。这意味着如果用户单击按钮,他们不会得到响应,但这也意味着微调器之类的东西不会动画。通过拆分它,我的意思是您需要将进行数据库调用的部分分开,并将其放在另一个线程上。然后,它会在完成后与 UI 线程同步备份,然后您可以执行您的 UI 操作,例如创建和布置视图。
    猜你喜欢
    • 1970-01-01
    • 2022-10-15
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多