【问题标题】:Hide Status Bar and Increase the height of UINavigationBar隐藏状态栏并增加 UINavigationBar 的高度
【发布时间】:2014-10-15 10:59:18
【问题描述】:

我正在使用故事板创建导航栏。

我的要求是隐藏状态栏并增加导航栏的高度。当我隐藏状态栏时,导航栏停留在顶部,高度为 44 像素。我需要一个导航栏高度为 64 像素(44 像素+状态栏高度)。有没有办法做到这一点?

带状态栏

没有状态栏

【问题讨论】:

  • 您好,请查看我编辑的答案。它工作正常。

标签: ios xcode swift uinavigationbar


【解决方案1】:

首先,您可以按照以下步骤隐藏您的statusBar

首先,将此代码放入viewWillAppear:

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];

其次,设置您的info.plist 文件,如下图所示:

接下来,您可以创建一个UINavigationBarCategory,并在其中设置navigaionBar 的高度。

Objective-c

在.h文件中

@interface UINavigationBar (Custom)
- (CGSize)sizeThatFits:(CGSize)size ;

在.m文件中

@implementation UINavigationBar (Custom)

- (CGSize)sizeThatFits:(CGSize)size {
    CGFloat width = [UIScreen mainScreen].bounds.size.width;
    CGSize newSize = CGSizeMake(width, 100);
    return newSize;
}

斯威夫特

extension UINavigationBar {
    public override func sizeThatFits(size: CGSize) -> CGSize {
        let width = UIScreen.mainScreen().bounds.width
        let newSize = CGSize(width: width, height: 64)
        return newSize
    }
}

【讨论】:

  • 谢谢。我想到了这个主意。但是我需要将所有视图控制器中的所有子视图的 y 位置调整为 64 像素吗?
  • 不是所有视图,只有导航子视图。
  • 我应该在哪里分配视图。在 viewdidload 中它不起作用
  • 太棒了。有用。但是 self.frame.size.width 不起作用。我为 iPad 编码了 1024。我在 swift 中实现了类别作为扩展。
  • 如何快速调用它?试图让它工作,但它总是说:在类型'UINavigationBar'上使用实例成员'sizeThatFits';您的意思是改用“UINavigationBar”类型的值吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多