Igo*_*man 7 uitableview ios autolayout swift ios11
我有一个视图控制器,其中包含一个包含聊天列表的tableview,一个在导航项中添加的搜索控制器(iOS 11功能)
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
navigationItem.searchController = searchController
definesPresentationContext = true
Run Code Online (Sandbox Code Playgroud)
当用户在表格视图中点击聊天时,应用程序将使用包含该聊天消息的另一个表视图推送新的视图控制器.这有点像它应该:
问题是,当用户激活搜索控制器,找到一些聊天并点击它时,包含表视图的推送视图控制器和聊天消息会做一些非常奇怪的动画,表视图不应该发生:
我在实际导航之前加载数据,并viewDidLoad使用表格视图将其绑定到reload()表视图.有问题的表视图使用自动布局和自定义单元格.
问题非常类似于UITableView在调用reloadData时有不需要的动画但对我来说只有在iOS 11搜索控制器处于活动状态时才会发生.
编辑:如果我删除tableView.rowHeight = UITableViewAutomaticDimension并使用固定高度使用func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat问题仍然存在
就我个人而言,我会在呈现新的视图控制器之前隐藏 searchView 控制器。(例如,将 UIView.animates 与完成处理程序一起使用)
我不会尝试进一步调查,因为从 iOS11 开始,安全区域管理存在一个深奥的问题。一个错误?:)
甚至启动屏幕布局也没有正确处理。很多专业标志在发布时都错过了中间部分!