我尝试在重度UI更新时显示活动指示。
我最初的失败尝试是
- 在view1
显示活动指示器- pushViewController(创建此viewController的视图需要很长时间)
- 当view1的viewDidDisappear时(当pushViewController的推动动画时) 发生),隐藏活动指标
醇>
问题是即使我在pushViewController之前调用了“show activity indicator”,因为在创建正在推送的viewController视图时发生了大量的UI,因此没有显示活动指示。
我改变了战略,但它起作用,我不明白为什么。
- pushViewController
- 在viewController的viewDidLoad中显示活动指示器
- 在viewDidAppear处加载大量的UI并隐藏指示符
醇>
我的印象是指标没有出现第一种方法的原因是由于UI过程繁重 请参阅链接中的讨论。 (iphone) showing activity indicator before heavy ui updating
如果队列上的UI更新过多导致UI更新延迟(指示器未显示),为什么第二种方法有所不同?
我知道只有在创建视图时才会调用viewDidLoad 并且当视图实际显示在屏幕上时会调用viewDidAppear。(因此可以多次调用)
但是有一个根本的区别可以解释为什么使用viewDidAppear的第二种方法适用于我的情况?
除了所谓的主线程之外还有UI更新线程吗? 或主线程是UI更新线程?
谢谢
答案 0 :(得分:0)
首先,我想确保您在主线程上更新UIKit UI。这是必须的,你不必在使用UIKit时指定一个线程,除非你说使用主线程,但我认为这将是多余的。
我会在viewWillAppear中启动活动指示器。然后在viewDidLoad中加载其他所有内容。