setNavigationBarHidden在iOS 15上不工作



我有问题的方法setNavigationBarHidden,它似乎不能正常工作在iOS 15.

我现在正在处理这个结构:

  1. AViewController,需要navigationBar
  2. 另一个ViewController,当我点击UIButton时,从之前的推送,不需要navigationBar

iOS的旧版本上,我只是在第二个ViewControllerviewWillAppear方法中调用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方法或其他你想要的地方调用这个方法,那么问题就会消失。

最新更新