我最近将一些代码迁移到了新的iOS 11 beta 5 SDK。
现在,我从UITableView得到一个非常令人困惑的行为。tableview本身并不那么花哨。我有自定义单元格,但大多数情况下只是为了它们的高度。
当我用tableview推送视图控制器时,我会得到一个附加的动画,其中单元会沿着push / pop导航动画“向上滚动”(或可能改变整个tableview框架)并向下滚动。请参阅gif:
我手动创建tableview
的loadView
方法和设置自动布局约束等于前置,顶部的tableview的上海华盈的底部。超级视图是视图控制器的根视图。
View Controller推送代码非常标准: self.navigationController?.pushViewController(notifVC, animated: true)
相同的代码提供了iOS 10上的正常行为。
您能指出我出什么问题的方向吗?
编辑:我做了一个非常简单的tableview控制器,我可以在那里复制相同的行为。码:
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
创建具有给定尺寸和颜色的正方形图像。
如果我注释掉这行,我会恢复正常的行为。
我对此事有任何想法。
navigationBar.isTranslucent
来false
,否则它工作正常。