如何在swift5中调整UINavigationBar的位置?

问题描述 投票:0回答:1

我想重新定位UINavigationBar。因此,我使用代码提供了一个新值,但它没有改变。

@IBOutlet var headerBar: UINavigationBar!
let screenHeight = UIScreen.main.bounds.size.height
    override func viewDidLoad() {
        super.viewDidLoad()
        if screenHeight > 667 {
            headerBar = UINavigationBar(frame: CGRect(x: 0, y: 54, width: headerBar.frame.width, height: headerBar.frame.height))
        } else {
            headerBar = UINavigationBar(frame: CGRect(x: 0, y: 40, width: headerBar.frame.width, height: headerBar.frame.height))
        }
    }

我该如何解决这个问题?

我在主线程上运行,但是没有变化。

@IBOutlet var headerBar: UINavigationBar!
let screenHeight = UIScreen.main.bounds.size.height
    override func viewDidLoad() {
        super.viewDidLoad()
        DispatchQueue.main.async {
            if self.screenHeight > 667 {
                self.headerBar = UINavigationBar(frame: CGRect(x: 0, y: 54, width: self.headerBar.frame.width, height: self.headerBar.frame.height))
            } else {
                self.headerBar = UINavigationBar(frame: CGRect(x: 0, y: 40, width: self.headerBar.frame.width, height: self.headerBar.frame.height))
            }
        }
    }

从主故事板查看的标题栏区域

注意:此标题栏被图片中的导航控制器栏遮盖了。但是我在代码中隐藏了导航控制器栏。enter image description here

ios swift view uinavigationbar
1个回答
0
投票

尝试一下

    override func viewDidLoad() {
        super.viewDidLoad()
        DispatchQueue.main.async {
             let screenHeight = UIScreen.main.bounds.size.height
             let bounds = self.navigationController!.navigationBar.bounds
           self.navigationController?.navigationBar.frame = CGRect(x: 0, y: self.screenHeight > 667 ? 54 : 40, width:bounds.width, height: bounds.height )

        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.