【发布时间】:2021-09-07 20:55:49
【问题描述】:
当我第一次切换 1 > 2 时,我在 UITabbar 中有 5 个选项卡,这很慢,因为在 2 中有非常复杂的视图和 viewDidLoad() 上的设置。
我怎样才能让它更快或更好?我可以在打开 1 时预加载 2 吗?或者我可以在加载视图时显示加载指示器吗?
【问题讨论】:
标签: ios swift uitabbarcontroller viewcontroller uitabbar
当我第一次切换 1 > 2 时,我在 UITabbar 中有 5 个选项卡,这很慢,因为在 2 中有非常复杂的视图和 viewDidLoad() 上的设置。
我怎样才能让它更快或更好?我可以在打开 1 时预加载 2 吗?或者我可以在加载视图时显示加载指示器吗?
【问题讨论】:
标签: ios swift uitabbarcontroller viewcontroller uitabbar
关于你的问题的上下文太少了。我唯一可以推荐你的是在 XCode 中使用“时间分析器”工具来研究问题
(对于 XCode 12.5) 按 XCode -> 打开开发者工具 -> 仪器
那么。按“时间分析器”
对于带有此类代码的 ViewController
import UIKit
class DelayViewController: UIViewController {
var i = 0
override func viewDidLoad() {
while i < 100000000 {
print("i is \(i)")
i += 1
}
}
}
我们可以在“时间分析器”中看到打印方法需要多少时间
【讨论】:
您可能有太多任务在主队列上运行。您应该只更新主队列上的 UI。您是否在方法 DispatchQueue.main.async { } 中从数据库中获取某些内容、下载图片等?如果是,请尝试从其他队列上的数据库中获取这些内容(例如DispatchQueue.global)。您也可以使用UIActivityIndicator 直到您的设置完成,然后在主队列上更新它。
【讨论】: