我想知道有人会异步加载多个UI元素。就我而言,我的UIViewController
有一个UISegmentControl
。每个细分都有不同的UI方面要加载
例如seg1
显示一个图像,seg2
显示图像和一些文本等
如果我在显示UIViewController
之前加载所有UI元素,那么就会出现明显的延迟。因此,我希望异步加载seg2...n
以使UI感觉更具响应性。
我是否需要通过
加载所有内容DispatchQueue.main.async {
// load UI
}
对于我想要在后台加载的每个seg
?或者我可以在另一个线程上加载这些元素而不占用主线程吗?我知道你不应该在后台线程上更新UI ...但如果我使用异步代码,使用主线程仍会阻止UI吗?
答案 0 :(得分:0)
您无法在后台线程上进行UI更改。几乎所有UIKit调用都必须在主线程上进行。因此,你很可能不走运。
相反,你应该做的是在后台线程上进行耗时的数字运算(例如下载和解析数据),然后使用DispatchQueue.main.async()将数据安装到主线程上的视图中耗时的工作已经完成。
如果它是引入延迟的UI设置并且无法加速它那么你可能会运气不好。