我很确定这不是重复的,因为我查看了其他答案,它们都已过时,并没有提供确切的答案。
我有导航控制器和几个视图控制器。我想让导航栏更高一些,所以它适合我需要的文本大小。我怎样才能做到这一点 ?
我试过这个: UINavigationBar.appearance()。frame = CGRect(x:0.0,y:0.0,width:320.0,height:210.0)但没有任何反应......
另外,我无法使用Xcode布局按钮向导航栏添加任何约束。
希望有人可以帮我解决这个问题。提前谢谢!
答案 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)
然后添加到导航栏。