如何在Xcode中增加导航栏的高度?

时间:2015-08-11 11:18:25

标签: ios objective-c iphone xcode swift

我正在开发一个应用程序,我需要保留一个导航栏。 当我在栏上写任何标题时,时间和标题有点非常接近。我想增加酒吧的高度,这样可以获得喘息的空间。

12 个答案:

答案 0 :(得分:39)

选择 ViewController - >选择导航项 - > 提示 - >添加空间 增加 height **Navigation bar**

点击此处查看图片: enter image description here

<强>编程方式

viewWillAppear viewDidAppear 方法

中添加此内容

<强>目标C

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, self.view.frame.size.width,80.0)];

<强>夫特

self.navigationController.navigationBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 80.0)

<强>夫特-3

self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 80.0)

iOS 11

enter image description here

目标C

for (UIView *subview in self.navigationController.navigationBar.subviews) {
    if ([NSStringFromClass([subview class]) containsString:@"BarBackground"]) {
        CGRect subViewFrame = subview.frame;
        // subViewFrame.origin.y = -20;
        subViewFrame.size.height = 100;
        [subview setFrame: subViewFrame];
    }
}

<强>迅速

for subview in (self.navigationController?.navigationBar.subviews)! {
       if NSStringFromClass(subview.classForCoder).contains("BarBackground") {
            var subViewFrame: CGRect = subview.frame
            // subViewFrame.origin.y = -20;
            subViewFrame.size.height = 100
            subview.frame = subViewFrame

        }

    }

答案 1 :(得分:14)

答案 2 :(得分:11)

  

此解决方案在Xcode 8.x.x及更高版本中不再有效!

您也可以在不创建自定义导航的情况下增加高度,请按照以下步骤进行操作

步骤1在Storyboard或XIB中选择导航栏

enter image description here

步骤2从Identity Inspector复制ObjectID

enter image description here

步骤3打开Storyboard / XIB作为源代码

enter image description here

步骤4在源代码中查找ObjectID,超过搜索中的ObjectID

enter image description here

步骤5编辑高度!多数民众赞成

enter image description here

我希望这会对您有所帮助

答案 3 :(得分:10)

将以下扩展名添加到您的项目中:

import UIKit

extension UINavigationBar {

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

}

答案 4 :(得分:8)

viewWillAppear 方法

中添加此内容
CGFloat height = 80;
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0,
self.view.frame.size.width,height)];

如果它先增加并缩小到原始高度,则在 viewDidAppear 方法中添加此代码

答案 5 :(得分:8)

Apple proposes不要调整navigationBar本身的大小,但要从栏中移除阴影并在navigationBar下添加自定义视图。这适用于大多数情况。检查Apple的样品。

答案 6 :(得分:5)

只需将此行添加到您的 viewController

import copy
a = [{'a':1, 'b':2, 'c':3}, {'d':4, 'e':5, 'f':6}]
b = copy.deepcopy(d)

答案 7 :(得分:0)

如果我没错,你不能改变默认NavigationBar的高度。

虽然,您可以创建自定义NavigationBar并为其添加自定义高度。

答案 8 :(得分:0)

我们需要在每次视图显示时更改导航栏的高度。所以将代码放在viewWillAppear上

override func viewWillAppear(_ animated: Bool) {
     self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 80)
}

我们可以将宽度设置为视图的宽度,并根据需要更改高度。

答案 9 :(得分:0)

我会隐藏导航栏并自行实现自定义导航栏。这样你就可以按照自己的意愿设计它。

有一个关于如何做到这一点的简单教程: https://www.codeschool.com/blog/2014/11/11/ios-app-creating-custom-nav-bar/

答案 10 :(得分:-1)

[self.navigationController.navigationBar setPrefersLargeTitles:YES]; 将以编程方式增加导航栏的高度

答案 11 :(得分:-2)

如果你是

  • 使用故事板(你说你是)
  • 使用自动布局和
  • 使用手动添加的导航栏(而不是导航控制器提供的导航栏)

然后您可以在导航栏上设置高度约束。

xcode add new constraints dialog