【问题标题】:When hiding the statusbar my navigation bar moves up in iOS7隐藏状态栏时,我的导航栏在 iOS7 中向上移动
【发布时间】:2013-10-08 20:59:19
【问题描述】:

我试图隐藏状态栏但保持“更大”的导航栏高度。现在,当我通过将- (BOOL)prefersStatusBarHidden 设置为YES 然后调用[self setNeedsStatusBarAppearanceUpdate]; 来隐藏状态栏时。这样做的问题是导航栏会向上滑动并且不会为我要显示的通知留出空间。简单地在状态栏上添加一个视图不是一种选择,我们的状态栏/导航具有花哨的模糊效果。有谁知道如何使用状态栏高度保持标准导航栏高度并从中删除状态栏?

编辑;我最终做的是冒险并通过私有 API 获取状态栏的 UIWindow 并抵消它。

编辑 2;应用程序通过私有 API 获得批准。不过要小心!

【问题讨论】:

  • UINavigationBarUIView 的子类。将其框架设置为您想要的任何内容。如果您使用的是设置其框架的UINavigationController,请将其子类化并覆盖viewWillLayoutSubviews
  • 一些屏幕截图可以帮助您了解什么,更重要的是为什么要这样做。
  • 你能发一张快照吗?

标签: ios ios7 uinavigationbar uistatusbar


【解决方案1】:

您可以创建一个自定义 UIView,其框架为

customView.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);

还可以按照以下步骤隐藏您的状态栏

转到 info.plist 并添加两个属性(如果不存在)。将“状态栏最初隐藏”设置为YES 并将UIViewControllerBasedStatusBarAppearance 设置为NO。这将隐藏您应用的状态栏。

【讨论】:

  • customView 高度应该是self.view.frame.size.height - 20 :)
  • 赏金是自动授予的,但答案大多是正确的。我通过手动添加到我的视图中的替换 UINavigationView 类解决了我的问题,而我的控制器的真正导航栏保持隐藏状态。虽然我确实使用基于视图控制器的状态栏外观 plist 项并覆盖 prefersStatusBarHidden
【解决方案2】:

在您的视图控制器中添加此代码:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)])
{
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

【讨论】:

  • 这并不能解决问题,因为我不想丢失扩展布局。
【解决方案3】:

【讨论】:

  • 你好,我正在使用 TLYShyNavBar 和 carbonkit 来隐藏类似 youtube 主页的导航栏,你对此有什么想法吗?
【解决方案4】:

我必须这样做一次。我最终创建了自己的自定义导航栏,然后将框架设置为:

navBar.frame=CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);

当时它对我有用。试试看吧。

【讨论】:

    【解决方案5】:

    这里的另一种解决方法:子类UINavigationController覆盖方法:

    - (void)viewWillLayoutSubviews
    {
        [super viewWillLayoutSubviews];
        if (self.navigationBar.frameMinY < 1) {
            self.navigationBar.frameHeight = 64;
        } else {
            self.navigationBar.frameHeight = 44;
        }
    }
    

    其中设置frameMinY设置frame.origin.y和设置frameHeight设置frame.size.height

    【讨论】:

    • 这个方法在ios11上坏了
    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    相关资源
    最近更新 更多