我有一个导航栏,prefersLargeTitles
设置为True
。单击表格视图中的单元格以显示详细视图时,我希望导航栏使用以下内容变为透明,这样可以正常工作:
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
按详细视图上的后退按钮返回主视图控制器时,我调用:
self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = nil
不幸的是,导航栏的阴影视图将不会返回,如下所示。我错过了什么?
这在Xcode 10.1,iOS 12.1中对我有用。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 1. hide it in the current view controller you want it hidden in
navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
navigationController?.navigationBar.layoutIfNeeded()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
// 2. show it in when pushing or popping in the next view controller
navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")
navigationController?.navigationBar.layoutIfNeeded()
}