在 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 设置导致了延迟,并且无法加快速度,那么您可能就不走运了。
我想知道有人会如何异步加载多个 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 设置导致了延迟,并且无法加快速度,那么您可能就不走运了。