繁体   English   中英

如何在Swift中以编程方式更改NavigationBar的高度?

[英]How do I programmatically change the height of a navigationBar in Swift?

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let height = CGFloat(84)
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: height)
}

此代码只是在titleView上方插入空格。 在(0,0)点处的自定义titleView在其上方约有20个空间点。 高度> 40开始从navBar流出。

您可以继承UINavigationBar:

class CustomNavigationBar: UINavigationBar {
    override func sizeThatFits(_ size: CGSize) -> CGSize {
        let newSize :CGSize = CGSize(width: self.frame.size.width,height: 84)
        return newSize
    }
}

然后创建导航控制器,并使用初始化程序来使用您的自定义导航栏类​​。

let nav = UINavigationController(navigationBarClass:CustomNavigationBar.self,toolbarClass: nil)

保留UINavigationBar的所有现有行为,并采用您的自定义高度。

要么

就像您已经尝试过的:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let height: CGFloat = 84 //whatever height you want
    let bounds = self.navigationController!.navigationBar.bounds
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height)

}

或者:您可以尝试此解决方案更改导航栏的高度iOS Swift

您可以使用自定义视图替换导航栏。此操作更加轻松灵活。 隐藏导航栏并实现自定义视图。

class ViewController : UIViewController {

    var navBar: UINavigationBar = UINavigationBar()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setCustomNavBarView()
    }

    func setCustomNavBarView() {
        self.navBar.frame = CGRect(x: 0, y: 0, width: 350, height: 50)  // Set you custom width and Height
        self.navBar.backgroundColor = UIColor.gray
        self.view.addSubview(navBar)

    }
}

有关如何执行此操作的简单教程

希望这可以帮助!!

        class ViewController: UIViewController {
        var navBar: UINavigationBar = UINavigationBar()
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.    
            self.setCustomNavBarView()
    }
`func setCustomNavBarView() {
            self.navBar.frame = CGRect(x: 0, y: 0, width: 350, height: 100)  // Set you custom width and Height
            self.navBar.backgroundColor = UIColor.gray
            self.view.addSubview(navBar)
        }
    `

在这里快速更新3个代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM