如何更改导航栏Swift 3的高度

时间:2016-11-22 20:50:23

标签: ios swift xcode uinavigationcontroller uinavigationbar

我很确定这不是重复的,因为我查看了其他答案,它们都已过时,并没有提供确切的答案。

我有导航控制器和几个视图控制器。我想让导航栏更高一些,所以它适合我需要的文本大小。我怎样才能做到这一点 ?

我试过这个: UINavigationBar.appearance()。frame = CGRect(x:0.0,y:0.0,width:320.0,height:210.0)但没有任何反应......

另外,我无法使用Xcode布局按钮向导航栏添加任何约束。

希望有人可以帮我解决这个问题。提前谢谢!

enter image description here

5 个答案:

答案 0 :(得分:32)

这是一种方法:

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

}

答案 1 :(得分:9)

您可以根据UINavigationBar创建一个类

class TTNavigationBar: UINavigationBar {

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: 55)
    }

}

并将其添加到您的NavigationController。

答案 2 :(得分:9)

您可以在扩展UINavigationController

的类中编写此代码
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let height = CGFloat(72)
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height)
}

答案 3 :(得分:5)

如果您应用中的导航栏都具有相同的调整高度,这可能会更好。

extension UINavigationBar {
    open override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: 51)
    }
}

答案 4 :(得分:-2)

你可以从xib(你的身高)绘制你的导航栏,然后:

high = mid

另外,如果你想从代码创建UIView,

self.navigationController?.navigationBar.addSubview(yourNavBarView)

然后添加到导航栏。