【发布时间】:2015-07-07 13:19:40
【问题描述】:
我有一些运行大约 0.2 秒的繁重代码。
我这样设置活动指示器;但是,它并没有显示出来,而是整个屏幕冻结了大约 0.2 秒,直到代码完成。
func heavyWork() {
self.actvityIndicator.startAnimating()
...
// heavy loop codes here
...
self.activityIndicator.stopAnimating()
}
这是使用活动指示器的正确方法吗?
当我注释掉
// self.activityIndicator.stopAnimating()
活动指示器显示并停留在那里 - 代码设置正确。
但 UI 似乎没有在正确的时间更新。
正如我所说,在完成繁重的代码之前,屏幕只是冻结而不显示活动指示器。
【问题讨论】:
-
您的
heavy loop code是否在后台线程上运行?繁重的循环代码将阻止 UI 显示活动指示器。此外,如果您在后台线程上调用heavyWork,则UI不应更新,因为它不在主线程上。 -
如果你在后台线程上,你不能在 UI 上修改任何东西;如果你在主线程上,那么它不是做繁重工作的最佳选择。
标签: ios swift activity-indicator