我有问题的方法setNavigationBarHidden
,它似乎不能正常工作在iOS 15.
我现在正在处理这个结构:
- A
ViewController
,需要navigationBar
- 另一个
ViewController
,当我点击UIButton
时,从之前的推送,不需要navigationBar
在iOS的旧版本上,我只是在第二个ViewController
的viewWillAppear
方法中调用setNavigationBarHidden(true, animated: true)
,一切都如预期的那样工作,但是,从新版本的iOS来看,这并没有正确发生。
现在navigationBar
不能正确隐藏,我必须实现我想要的行为的唯一方法是使用navigationBar.isHidden = true
,不幸的是,这导致我在两个控制器之间的一个草率和不那么流畅的动画。
我该如何解决这个问题?
您只需添加
DispatchQueue.main.async {
navigationBar.isHidden = true
}
/// 针对iOS15
/// 适配导航栏隐藏
static func configureNavgationBarStyle() {
if #available(iOS 15.0, *) {
let navigationBarAppearance = UINavigationBarAppearance()
navigationBarAppearance.configureWithDefaultBackground()
UINavigationBar.appearance().standardAppearance = navigationBarAppearance
UINavigationBar.appearance().compactAppearance = navigationBarAppearance
UINavigationBar.appearance().scrollEdgeAppearance = navigationBarAppearance
}
}
在
didFinishLaunchingWithOptions
方法或其他你想要的地方调用这个方法,那么问题就会消失。