我最近将一些代码迁移到新的iOS 11 beta 5 SDK
我现在从UITableView中得到了一个非常混乱的行为。桌面视图本身并没有那么花哨。我有自定义单元格,但在大多数情况下,这只是因为它们的高度
当我使用tableview按下视图控制器时,我会得到一个附加的动画,其中单元格会“向上滚动”(或者可能会更改整个tableview帧),并沿着推/弹出导航动画向下滚动。请参阅gif:
我在loadView
方法中手动创建tableview
,并将自动布局约束设置为等于tableview的superview的前导、尾随、顶部和底部。超级视图是视图控制器的根视图
视图控制器推送代码非常标准:self.navigationController?.pushViewController(notifVC,动画:true)
同样的代码在iOS 10上提供了正常的行为
你能告诉我哪里出了问题吗
编辑:我制作了一个非常简单的tableview控制器,我可以在那里重现相同的行为。代码:
类VerySimpleTableViewController:UITableViewController{
重写func viewDidLoad(){
super.viewDidLoad()
self.tableView.register(UITableViewCell.self,强制重用标识符:“单元格”)
}
重写func numberOfSections(在tableView:UITableView中)->;Int{
返回1
}
重写func tableView(tableView:UITableView,numberOfRowsInSection:Int)->gt;Int{
返回4
}
重写func tableView(utableview:UITableView,cellForRowAt indexath:indexPath)->;UITableViewCell{
let cell=tableView.dequeueReusableCell(带有标识符:“cell”,用于:indexath)
cell.textlab?.text=String(indexPath.row)
cell.accessoryType=.disclosureIndicator
返回单元
}
重写func tableView(tableView:UITableView,didSelectRowAt indexPath:indexPath){
取消选择行(at:indexPath,动画:true)
设vc=VerySimpleTableViewController.init(样式:。分组)
self.navigationController?.pushViewController(vc,动画:true)
}
}
编辑2:我能够将问题缩小到我对UINavigationBar的定制。我有这样的定制:
rootNavController.navigationBar.setBackgroundImage(CreateFilleImage(带颜色:。白色,大小:1),for:。默认值)
其中createFilleImage
创建具有给定大小和颜色的方形图像
如果我把这句话注释掉,我会恢复正常的行为
如果您能对此事有任何想法,我将不胜感激
这是由于UIScrollView的
(UITableView是UIScrollView的一个子类)新的ContentInsertAdjustmentBehavior
属性,默认情况下该属性设置为.automatic
您可以在任何受影响控制器的viewDidLoad中使用以下代码段覆盖此行为:
tableView.contentInsettaJustmentBehavior=.never
https://developer.apple.com/documentation/uikit/uiscrollview/2902261-contentinsetadjustmentbehavior