在 swift 中异步加载多个视图

Loading multiple views asynchronous in swift

我想知道有人会如何异步加载多个 UI 元素。在我的例子中,我有一个 UIViewController 有一个 UISegmentControl。每个部分都有不同的 UI 个要加载的方面。
例如seg1显示一张图片,seg2显示一张图片和一些文字等。

如果我在显示 UIViewController 之前加载所有 UI 元素,则会出现明显的延迟。所以我想异步加载 seg2...n 以使 UI 感觉更灵敏。

我需要通过

加载所有内容吗
DispatchQueue.main.async { 
    // load UI
}

对于每个 seg 我想在后台加载?或者我可以将这些元素加载到另一个线程而不占用主线程吗?我知道您不应该在后台线程上更新 UI...但是如果我使用异步代码,使用主线程是否仍会阻止 UI?

您不能在后台线程上进行 UI 更改。几乎所有 UIKit 调用都必须在主线程上进行。因此,您可能不走运。

相反,您应该做的是在后台线程上进行耗时的数字运算(例如下载和解析数据),然后使用 DispatchQueue.main.async() 将数据安装到主线程的视图中耗时的工作完成后线程。

如果是 UI 设置导致了延迟,并且无法加快速度,那么您可能就不走运了。