从iOS 11搜索控制器导航时,不需要的UITableView重新加载动画

前端之家收集整理的这篇文章主要介绍了从iOS 11搜索控制器导航时,不需要的UITableView重新加载动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个视图控制器,其中包含一个包含聊天列表的tableview,一个在导航项中添加搜索控制器(iOS 11功能)
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
navigationItem.searchController = searchController
definesPresentationContext = true

用户在表格视图中点击聊天时,应用程序会使用另一个包含该聊天消息的表格视图来推送新的视图控制器.这有点像它应该:

问题是,当用户激活搜索控制器,找到一些聊天并点击它时,包含表视图的推送视图控制器和聊天消息会做一些非常奇怪的动画,表格视图不应该发生:

我在实际导航之前加载数据,并使用表视图上的reload()将其绑定到viewDidLoad中的表视图.有问题的表视图使用自动布局和自定义单元格.

问题与UITableView has unwanted animation when reloadData is called非常相似,但对我来说只有在iOS 11搜索控制器处于活动状态时才会发生.

编辑:如果我删除tableView.rowHeight = UITableViewAutomaticDimension并使用func tableView使用固定高度(_ tableView:UITableView,heightForRowAt indexPath:IndexPath) – > CGFloat问题仍然存在

解决方法

就个人而言,我只是在呈现新的视图控制器之前隐藏searchView控制器.
(例如,使用带有完成处理程序的UIView.animates)

我不打算进一步调查,因为自iOS11以来,安全区管理存在一个深奥的问题.一个bug?

猜你在找的iOS相关文章