在 UITabbar 中切换标签太慢了

问题描述

当我第一次切换 1 > 2 时,UITabbar 中有 5 个选项卡,速度很慢,因为在 2 中有非常复杂的视图和 viewDidLoad() 设置。

我怎样才能让它更快或更好?我可以在打开 1 时预加载 2 吗?或者我可以在加载视图时显示加载指示器吗?

解决方法

关于您的问题的上下文太少。我唯一可以推荐你的是在 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
        }
    }
}

我们可以在“Time profiler”中看到打印方法需要多少时间

enter image description here

,

您可能在主队列上运行了太多任务。您应该只在主队列上更新 UI。您是否在 DispatchQueue.main.async { } 方法中从数据库中获取某些内容、下载图片等?如果是,请尝试从其他队列(例如 DispatchQueue.global)上的数据库中获取这些内容。您也可以使用 UIActivityIndicator 直到您的设置完成,然后在主队列上更新它。