iOS 7 - 使 UINavigationBar 扩展到屏幕顶部

Posted

技术标签:

【中文标题】iOS 7 - 使 UINavigationBar 扩展到屏幕顶部【英文标题】:iOS 7 - Make UINavigationBar extend to top of the screen 【发布时间】:2014-01-06 14:30:20 【问题描述】:

我是为 ios 制作应用程序的新手,这个问题已经困扰了我好几个小时。 模态弹出视图(右侧)中的导航栏没有正确延伸到屏幕顶部,就像在其他应用程序中一样。我知道我可以禁用自动布局并执行CGFloat newheight = self.InfoNavigationBar.frame.size.height + 20; [self.InfoNavigationBar setFrame:CGRectMake(0, 0, 320, newheight)]; 之类的操作,但如果可能的话,我想在启用自动布局的情况下执行此操作。 现在,在我的 iPhone 上查看时的视图如下所示:

我怎样才能让它正确地延伸到屏幕顶部,而将状态栏留在上面?如果这可以在 IB 中完成,而不必求助于代码中的所有这些,那就太好了。

(编辑:SO 上的其他一些与 iOS 相关的问题表明 IB 和 Storyboards 是两个不同的东西。我什至不知道哪个是哪个,看看第一个屏幕截图,我正在使用任何那个.)

【问题讨论】:

【参考方案1】:

显然,像这样覆盖 UINavigationBar 的 positionForBar 方法就足够了:https://***.com/a/18968920/1058399 它仍然感觉像一个肮脏的黑客,但在有更好的方法之前,我会这样做。

编辑以防像我这样的新手阅读此内容: 当您希望您的应用程序支持横向模式时,所有这些都会崩溃。导航栏在横向模式下应该更小,如果您将视图包装在导航控制器中,这会自动为您完成。不要只放置导航栏并期望它们“正常工作”。

【讨论】:

以上是关于iOS 7 - 使 UINavigationBar 扩展到屏幕顶部的主要内容,如果未能解决你的问题,请参考以下文章

使 UINavigationBar 消失和出现在触摸,模仿 iOS 上的 safari

带有纯色的UINavigationBar - ios 7

使 UINavigationBar 透明

在 ios 7 中如何增加 UINavigationbar 的大小

覆盖 UINavigationBar 时 iOS 7 状态栏变黑

防止 iOS 7 UINavigationBar 使用 UIAppearance 为 barTintColor 更改设置动画