cuốn sách gpt4 ai đã làm

swift - insertSubVIew 占用 "long"时间

In lại Tác giả: Walker 123 更新时间:2023-11-28 12:58:59 31 4
mua khóa gpt4 Nike

在我的容器 Controller 中,用户可以平移 View 以切换到不同的 View 。当平移手势开始时,它会将新 View Controller 的 View 添加到 View 中:view.insertSubView(view:, atIndex:)

经过一番研究,我注意到这一步大约需要 0.03 秒(而其他的都是 0.001-0.002 秒)。这会导致过渡有点不顺畅,这有点烦人。

View Controller 是在应用程序开始时使用 Storyboard作为全局创建的。

另外,这只会在第一次加载 View 时发生。之后的转换都很流畅。

我可以做些什么来预加载 View ,以便在第一次加载时不会花费这么“长”的时间?

biên tập:
周围环境:

var pendingViewController: UIViewController! {
didSet {
if let pending = pendingViewController {

addChildViewController(pending)

let index = view.subviews.count - 1

NSLog("start insert view test")
view.insertSubview(pending.view, atIndex: index)
NSLog("end insert view test")

pending.didMoveToParentViewController(self)
}
}
}

因为它只在第一次加载 View 时发生,我认为问题可能出在 viewDidLoadviewWillAppear 的某个地方。结果如下所示。只有 viewDidLoad 花费了少量时间(0.005 秒)。虽然在到达 viewDidLoad 之前有 0.02 秒的间隔,但我不知道它可能是什么。

2015-12-17 15:15:57.116 Valor[777:232799] start insertView view test
2015-12-17 15:15:57.136 Valor[777:232799] start viewDidLoad test
2015-12-17 15:15:57.141 Valor[777:232799] end viewDidLoad test
2015-12-17 15:15:57.142 Valor[777:232799] start viewWillAppear test
2015-12-17 15:15:57.144 Valor[777:232799] end viewWillAppear test
2015-12-17 15:15:57.146 Valor[777:232799] end insertView view test

câu trả lời hay nhất

使用工具找出慢速代码发生的位置,而不是记录带有时间戳的语句。这将向您显示(包括系统调用)确切时间花在了哪里。

由于布局原因,插入 subview 可能会很慢。但是,您的跟踪(例如它)表明时间用于创建和加载 View Controller 的 View 。你说这个观点来自 Storyboard。里面有什么?加载此 View 时会触发多少其他事情?使用时间分析器,您将能够分辨出来。它可以像一个属性一样简单,你给它一个默认值,而不是一个惰性值。

The view controller is created at the beginning of the app as a global, using the storyboard.

如果是这种情况,那么您可以通过执行以下操作来强制加载 View Controller 的 View

let hack = viewcontroller.view

访问 View Controller 的 view 属性会导致它从 Storyboard加载 View 。

关于swift - insertSubVIew 占用 "long"时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34335812/

31 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress