gpt4 book ai didi

ios - 使用导航 Controller 时滞后 UITableView 滚动

转载 作者:行者123 更新时间:2023-11-28 07:03:29 26 4
gpt4 key购买 nike

TL;TR 滚动 UItableView 时,导航 Controller 的导航栏会导致延迟。隐藏时,完全没有延迟。

几天来,我一直在为 UITableViews 的延迟而苦苦挣扎。在浏览了一些 stackoverflow 之后,我发现几乎没有任何东西会导致我的 UItableViews 滞后。我检查了一些事情:

  • 我使用 ReusableIdentifier
  • 我将我的类作为自定义类,Outlets 位于该自定义类中,只需在 tableView cellForRowAtIndexPath 上设置这些 outlets
  • 我的单元格确实包含图像,但它们是来 self 的 Assets 的图像,因此,根据 this answer这应该不会造成任何麻烦,因为它已经为我缓存了这些图像。

今天,我正在创建另一个 View Controller ,为了测试,我将 Is Initial View Controller 设置为该 View 。完成后,我将 Is Initial View Controller 设置为第一个 View Controller 而不是导航 Controller 。我很高兴,因为它在打开新 View 时没有给我任何滚动延迟。然后我注意到我丢失了我的导航按钮,将 Is Initial View Controller 放回导航 Controller 并猜猜是什么,我的 UITableView 非常滞后!

现在我真的很想知道是什么导致了这种滞后。

我在一些 View 上使用这段代码来隐藏和显示栏:

override func viewWillAppear(animated: Bool) {
self.navigationController?.setNavigationBarHidden(true, animated: animated)
super.viewWillDisappear(animated)
}

override func viewWillDisappear(animated: Bool) {
self.navigationController?.setNavigationBarHidden(true, animated: animated)
super.viewWillDisappear(animated)
}

我注意到,当显示导航栏时,它会产生延迟。当它隐藏时,它不会。现在导航 Controller 栏只是标准的,没什么特别的(还)

我对 Instruments 了解不多,但如果对您有帮助:

启用导航栏: image

没有启用导航栏: image

结构

这就是我的两个 View 的样子,它们都有一个 tableView,它们都有相同的导航栏问题,一个只包含图像、标签和按钮。另一个包含更多的东西,但区别几乎是一样的,当导航栏不隐藏时滞后。

structure

继续

显示另一个 View 有不同的方法,但目前为止没有任何区别。从按钮直接到 View 的 Segue 会产生与使用 self.navigationController?.pushViewController(...)

时相同的延迟

iPhone 6 Plus

在 Iphone 6 Plus 上,即使没有导航栏,这款手机也显得更加卡顿。但这可能是因为我使用的是旧 MacBook。缩小到 33%,当从 iPhone 本身显示顶部和底部菜单时它会滞后,所以我想这只是我自己的问题。

附加代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell: ItemCell = self.LicenseTableView.dequeueReusableCellWithIdentifier("itemCell", forIndexPath: indexPath) as! ItemCell!
cell.lblItemDescription?.text = self.ItemsList[indexPath.row].description
return cell
}

感谢阅读,希望对您有所帮助,如果您需要任何其他信息,请告诉我!

最佳答案

尝试以下操作:在 Storyboard中打开 NavigationController 场景。选择导航栏并禁用半透明:

enter image description here

另外:当内容透明时, TableView 会出现很多性能问题。要查找有问题的 subview ,请在模拟器中选择“Debug > Color Blended Layers”。所有的红色 View 都是有问题的。尝试消除这些 View 的透明度。

关于ios - 使用导航 Controller 时滞后 UITableView 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428335/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com