我怎样才能改变导航栏Swift 3的高度

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

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

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

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

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

在这里输入图像说明

这是一个办法:

override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) let height: CGFloat = 50 //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) } 

你可以像这样创build一个基于UINavigationBar

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

并将其添加到您的NavigationController。

你可以在扩展UINavigationController的类中编写这段代码

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

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

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

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

 self.navigationController?.navigationBar.addSubview(yourNavBarView) 

另外,如果你想从代码创buildUIView,

 let viewNavBar = UIView(frame: CGRect( origin: CGPoint(x: 0, y:0), size: CGSize(width: self.view.frame.size.width, height: 100))) 

然后添加到导航栏。