从 iOS 11(及更高版本)开始,我尝试合并大标题(带有UISearchController
)。我的一个屏幕在层次结构上没有UITableView
第一个孩子(而是UIPageViewController
,这导致导航栏没有折叠,因为scrollView
它不是第一个孩子..但由于结构设计不能..无论如何这不是问题)。
当按下另一个屏幕(并且该屏幕已设置为navigationItem
)时,过渡动画看起来很奇怪(从中心关闭并且与导航栏动画不同步)。largeTitleDisplayMode
never
UISearchBar
注意:如果推送的控制器已largeTitleDisplayMode
设置为.automatic
(或always
),则转换正常。
背景
prefersLargeTitle
启用时,设置navigationItem
'ssearchController
并且层次结构上的第一个视图不是 tableView (或者我猜是 scrollView 后代),navigationBar 显示 searchBar 打开。
尝试过的选项
我尝试修改and的translucent
属性。还要设置 UINavigationBar 的.UINavigationBar
UISearchBar
clipToBounds
代码
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.prefersLargeTitles = true
self.navigationItem.largeTitleDisplayMode = .always
navigationItem.searchController = UISearchController(searchResultsController: nil)
}
}
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.largeTitleDisplayMode = .never
}
}