结构:NavigationController -> VC1 -> VC2
VC1需要以编程方式显示或隐藏状态栏,它由statusBarHidden
var statusBarHidden = false {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden : Bool {
return false
}
VC2还添加了以下代码:
override var prefersStatusBarHidden : Bool {
return false
}
If statusBarHidden
is 没有改变 before self.navigationController?.pushViewController(VC2, animated: true)
, 状态栏WILL NOTVC2中重叠导航栏。
但有一次statusBarHidden
被设定为true
,即使它被设置回false
,状态栏在VC2中会和导航栏重叠,顺便说一句,这和Storyboard Segue是一样的。但它在有刘海的 iPhone 上运行良好,例如 iPhone X、iPhone 11。
我曾尝试设置固定高度,但实际高度似乎没有受到影响,导航栏始终保持一定的高度,而不是64。
navBar.frame = CGRect(x:0, y:20, width:self.view.frame.size.width, height:64)