1

结构: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)
4

0 回答 0