我正在以编程方式创建一个UINavigationController
navigationController = UINavigationController(rootViewController: modeSelectVC!)
navigationController?.delegate = self
window.rootViewController = navigationController
window.makeKeyAndVisible()然后,我定制了我的UINavigationBar外观如下:
navigationBarAppereance.barTintColor = UIColor.ColorPalette.bostonUniversityRed
navigationBarAppereance.tintColor = UIColor.ColorPalette.eerieBlack
navigationBarAppereance.barStyle = .black
navigationBarAppereance.isTranslucent = true
navigationBarAppereance.prefersLargeTitles = true
navigationBarAppereance.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.ColorPalette.babyPowder]配置的UINavigationBar隐藏在与状态栏一起提供的rootViewController中,但是当rootViewController推送另一个视图控制器时,状态栏和导航条都变得可见,如下所示:

其结果是,正如我编程它是,但你也可以看到,上面,back按钮是错对齐的。如果我放弃大标题优先,那么后退按钮正确地对齐,但为什么它会错时,大标题被使用。
发布于 2017-10-22 15:38:41
我解决了这个问题。当我在初始视图控制器上启用状态栏后,无论出现什么,导航栏和状态栏都将正确显示。
我仍然不知道是什么导致了这个问题(如果这是我的实现错误还是文档的错误),但是处理UINavigationBar可能会很棘手!
发布于 2017-10-13 10:43:22
对于这个here,有一个很好的答案:
您应该将导航条的顶部固定在状态栏的底部,并使用UIBarPositioningDelegate机制将其位置设置为.topAttached,这将使其在状态栏下正确伸展。
https://stackoverflow.com/questions/46727427
复制相似问题