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

Kir*_*llC 25 xcode uinavigationbar uinavigationcontroller ios swift

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

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

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

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

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

在此输入图像描述

Fra*_*kie 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)

}
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了它,它根本不起作用.也许它是新的iOS版本,但在调用此代码后没有任何影响. (13认同)
  • >如果您尝试执行其他需要调整导航栏大小的内容,则不支持.https://openradar.appspot.com/32912789 (4认同)
  • @KirillC您可以继承UINavigationController并在那里添加Frankie的代码. (2认同)

kbo*_*dia 9

您可以在扩展UINavigationController的类中编写此代码

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


小智 8

您可以基于UINavigationBar这样创建一个类

class TTNavigationBar: UINavigationBar {

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

}
Run Code Online (Sandbox Code Playgroud)

并将其添加到您的NavigationController.

  • 您是否知道为什么在我的情况下永远不会调用此方法?我基本上只是将此代码复制粘贴到我的自定义UINavigationBar类中,并将其设置在导航栏上的情节提要中。 (2认同)