更改导航栏高度

时间:2017-01-18 17:32:06

标签: ios swift xcode uinavigationbar

我试图了解如何更改导航栏的高度。每当我将一个插入我的应用程序时,它比Apple的股票应用程序(例如,消息和设置)中使用的所有导航栏都短。我希望它达到那个高度,因为当我尝试添加一个条形按钮时,它与状态栏冲突。我还读到,作为开发人员,你不应该改变导航栏的高度,所以我有点困惑。最后,我查看了这个Stack Overflow页面:How can I change height of Navigation Bar Swift 3。 我试图实现代码......

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)

}

...但是当我这样做时我的应用程序崩溃了。 我使用Xcode 8.2 beta和Swift 3。

2 个答案:

答案 0 :(得分:0)

我认为你不能改变navigationBar的大小。 但这是我建议你怎么做的。

  1. 删除默认导航栏。

  2. 创建一个类似于设计添加约束的导航栏的视图>领先,尾随,顶部和高度 视图。所以基本上用它的设计将它固定在顶部,左侧和右侧 高度。

  3. 如果需要,左右添加2个按钮,类似于导航栏。添加按钮约束>领先,顶部,底部和 左边的一个宽度,右边的一个,顶部,底部和宽度。
  4. 添加UILabel,这将是您的导航栏标题。,添加标签约束前导左键,尾随右键,顶部 并在底部显示您创建的导航视图。制作uilabel文字 居中。
  5. 在这里,您可以使用自定义导航栏。 在每个控制器上,你需要做的就是CMD + C和另一个控制器上的CMD + V添加前导,尾随和顶部约束。 希望它有所帮助。 enter image description here

答案 1 :(得分:0)

添加独立的导航栏并使其与常规导航栏高度和旋转功能相匹配是可能的,也很简单。 Here is how to do it (link includes a video):

在Interface Builder中:

  • 将UINavigationBar添加到视图中,位于“顶部布局指南”位置。

  • 将前导空间的约束设置为容器边距,将容器余量的尾随空间设置为容器的顶部空间 - 取消选择“相对于边距”且常量值为0(零)。

    < / LI>
  • 选择导航栏后,在Identity Inspector中添加一个名为barPosition的密钥路径。为其指定Number类型,值为3

这应该就是你所需要的。但是,如果您已完成这些步骤并且您的项目似乎不喜欢关键路径,请继续如下:

  • 从导航栏的Identity Inspector中删除barPosition密钥路径。
  • 将导航栏的IBOutlet添加到视图控制器。
  • 将视图控制器设置为UINavigationBarDelegate
  • 将委托方法func position(for bar: UIBarPositioning) -> UIBarPosition添加到视图控制器,并返回值UIBarPosition.topAttached