我最近迁移了一些代码到新的iOS11beta5SDK.
我现在从UITableView得到一个非常令人困惑的行为.桌面视图本身并没有那么花哨.我有定制的单元格,但大部分只是为了它们的高度.
当我用TableView按下我的视图控制器时,我得到了一个附加动画,其中单元格"向上滚动"(或者可能整个表视图框都改变了),以及沿着推送/弹出导航动画向下滚动.请参阅gif:
我手动创建了tableview
inloadView
方法,并将自动布局约束设置为等于tableview的superview的前导、尾随、顶部和底部.superview是视图控制器的根视图.
视图控制器推送代码非常标准:self.navigationController?.pushViewController(notifVC, animated: true)
相同的代码在iOS 10上提供正常行为.
您能告诉我哪里出了问题吗?
编辑:我已经制作了一个非常简单的表视图控制器,我可以在那里重现相同的行为.代码:
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
创建具有给定大小和 colored颜色 的方形图像.
如果我注释掉这行,我就会恢复正常行为.
如果您对这件事有任何 idea ,我将不胜感激.