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