更改iOS Swift导航栏高度

10

我正在尝试更改应用程序中导航栏的高度。 当前的高度固定为44。我可以从Xcode更改宽度,但无法更改高度。

我不知道该如何更改。对iOS开发非常陌生。

有人能帮帮我吗?


这是你的导航栏还是UINavigationController的导航栏? - matt
导航栏。我只需将其简单拖放到我的视图上即可。我没有像样的控制器附加到导航栏。 - Skywalker
然后,您可以使用约束条件来完成它(无需编写代码)。请参见我下面的答案以获取屏幕截图。 - matt
可能是如何在Xcode中增加导航栏高度?的重复问题。 - odm
3个回答

22

只需拖动并将其放到我的视图上

在这种情况下,最简单的方法是使用约束。只需给它一个高度约束(以及其他定位它的约束)。无需编写代码!以下是一个例子:

enter image description here

这是完全没有任何代码实现的。所有都是通过约束完成的:

enter image description here

我们固定在父视图的顶部和侧面,以及高度为100的约束。


这太棒了,谢谢!我也可以使用约束来减小高度吗? - Skywalker
你可以这样做,但效果可能不好,因为它会自动填充标题等内容,并且较短的导航栏无法容纳标题。 - matt
1
@matt 使用这种方法如何使标题垂直居中? - Alfy
你怎样设置高度限制?当我尝试拖拽时,我只得到了“委托”选项...没有像通常一样的高度限制。 - Sirop4ik
@AlekseyTimoshchenko 如果您不知道如何在UINavigationBar上创建高度约束,请单独提出问题,谢谢。 - matt
最终我找到了问题所在,我需要从右侧视图树中拖放而不是在Storyboard的当前视图上进行拖放。 - Sirop4ik

13

试试这个:

import UIKit

class YourViewController : UIViewController {

    var navBar: UINavigationBar = UINavigationBar()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setNavBarToTheView()
        // Do any additional setup after loading the view.
        self.title = "test test"
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func setNavBarToTheView() {
        self.navBar.frame = CGRectMake(0, 0, 320, 50)  // Here you can set you Width and Height for your navBar
        self.navBar.backgroundColor = (UIColor.blackColor())
        self.view.addSubview(navBar)
    }
}

我刚刚尝试了那个选项,但没有导航栏显示。我应该在视图中拖放一个导航栏,还是我们要通过编程创建一个导航栏? - Skywalker
你是否将你的视图控制器嵌入到了导航控制器中? - iAnurag
我没有。我不确定如何准确地做。 - Skywalker
我现在可以看到导航栏和“test test”标题,但仍然无法更改高度。我尝试更改您在代码中评论的值,但没有效果。 - Skywalker
4
根据苹果文档:“可以使用UINavigationBar类的方法和属性自定义导航栏的外观,但决不能直接更改其框架、范围或透明度值,也不能直接修改其视图层次结构。要显示或隐藏导航栏,应通过导航控制器来实现,通过更改其navigationBarHidden属性或调用setNavigationBarHidden:animated:方法来实现。” - iAnurag

1

我知道这没有意义,但这就是我所做的(没有设置约束条件也可以工作)。

  1. 选择你的 View Controller
  2. 打开 显示属性检查器
  3. 对于 顶部栏,选择任何一个 选项卡栏(我选择了半透明的选项卡栏)。
  4. 显示对象库 中,将 导航项 拖放到 View Controller 上。(如果操作正确,应该看起来像图3)
  5. 此外(供参考),您可以使用无边距并将顶部设置为0来添加按钮等的约束。

enter image description here image 2

image 3

enter image description here


不要忘记嵌入导航控制器。 :) - dnaatwork.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接