gpt4 book ai didi

ios - iOS11 中奇怪的 uitableview 行为。单元格向上滚动并带有导航推送动画

转载 作者:IT王子 更新时间:2023-10-29 07:28:24 27 4
gpt4 key购买 nike

我最近将一些代码迁移到了新的 iOS 11 beta 5 SDK。

我现在从 UITableView 得到一个非常困惑的行为。 tableview 本身并不那么花哨。我有自定义单元格,但大部分只是针对它们的高度。

当我用 tableview 推送我的 View Controller 时,我得到一个额外的动画,其中单元格“向上滚动”(或者可能整个 tableview 框架被更改)并沿着推/弹出导航动画向下滚动。请看动图:

wavy tableview

我在 loadView 方法中手动创建 tableview 并将自动布局约束设置为等于 tableview 的 super View 的前导、尾随、顶部、底部。父 View 是 View Controller 的 Root View 。

View Controller 推送代码非常标准:self.navigationController?.pushViewController(notifVC, animated: true)

相同的代码提供了 iOS 10 上的正常行为。

你能指出我哪里出了问题吗?

编辑:我做了一个非常简单的 TableView Controller ,我可以在那里重现相同的行为。代码:

class VerySimpleTableViewController : UITableViewController {

override func viewDidLoad() {
super.viewDidLoad()

self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}


override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 4
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

cell.textLabel?.text = String(indexPath.row)
cell.accessoryType = .disclosureIndicator

return cell
}


override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)

let vc = VerySimpleTableViewController.init(style: .grouped)

self.navigationController?.pushViewController(vc, animated: true)
}
}

编辑 2:我能够将问题缩小到我对 UINavigationBar 的自定义。我有这样的定制:

rootNavController.navigationBar.setBackgroundImage(createFilledImage(withColor: .white, size: 1), for: .default)

其中 createFilledImage 创建具有给定大小和颜色的方形图像。

如果我注释掉这一行,我就会恢复正常行为。

如果您对此事有任何想法,我将不胜感激。

最佳答案

这是由于 UIScrollView 的 (UITableView 是 UIScrollview 的子类) 新的 contentInsetAdjustmentBehavior 属性,它是默认设置为 .automatic

您可以在任何受影响的 Controller 的 viewDidLoad 中使用以下代码片段覆盖此行为:

    tableView.contentInsetAdjustmentBehavior = .never

https://developer.apple.com/documentation/uikit/uiscrollview/2902261-contentinsetadjustmentbehavior

关于ios - iOS11 中奇怪的 uitableview 行为。单元格向上滚动并带有导航推送动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573829/

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