iOS 8 启动图像文件 - 导航栏和状态栏

Posted

技术标签:

【中文标题】iOS 8 启动图像文件 - 导航栏和状态栏【英文标题】:iOS 8 Launch Image File - Navigation Bar and the Status Bar 【发布时间】:2014-10-21 07:16:40 【问题描述】:

我正在使用 Interface Builder 制作 ios 8 的启动图像文件。我想要的启动图像非常简单(我认为与设置应用程序相同) - 顶部的导航栏带有一个空的、分组的 TableView .没有标题等。

注意,我通常不使用 Interface Builder - 所以 IB 对我来说是全新的。

我试图通过向视图添加导航栏和表格视图来实现这一点 - 然后设置约束。约束(和颜色)工作正常,但是...

问题:启动图像在状态栏上方全屏显示。像这样:

如何同时获得状态栏和导航栏?

就像我说的,当您选择在 Xcode 中添加启动屏幕时,我正在使用默认的“UIView”。所以没有导航控制器;是这个问题吗?

此外,UIView 上有一些选项似乎 应该能满足我的需求:

我尝试过使用状态栏选项,但它完全无法正常工作。

我需要推断还是默认? 我看到启动图像(状态栏 + 导航栏)和实际运行的应用程序之间有一个小的偏移,是我定位不正确吗? Top Bar 选项的用途是什么? 对于我想要的启动图像,我什至需要添加一个 TableView 作为子视图,还是可以在主 UIView 上使用背景颜色?我已经尝试过了,但后来我发现状态栏/导航栏的颜色不匹配......

对于 Interface Builder 新手,如何创建一个复制设置应用程序的启动屏幕文件?

【问题讨论】:

【参考方案1】:

如果您使用的是故事板文件,您可以将您的视图设置为导航控制器场景中的根视图。 Navigation Controller 的导航栏会自动将自身定位在状态栏下方。

不要忘记将导航控制器设置为初始视图控制器(通过在属性窗格中检查Is Initial View Controller

当您将导航控制器场景添加到情节提要时,它会自动添加一个表格视图控制器作为它的嵌套控制器。

如果你想用另一个控制器替换它,你必须从情节提要中删除表格视图控制器,将要使用的控制器添加到情节提要中,然后将其连接起来(通过命令+从导航中拖动控制器到视图控制器,然后选择 rootViewController 出口)

注意 启动屏幕故事板中的对象(视图控制器等)不应设置任何 IBOutlets。这会导致错误。

【讨论】:

谢谢,这完全符合我的需要。有几个问题:(1)使用故事板与启动图像的单一视图之间有什么区别(性能?)? (2) 我假设所有约束都设置正确? (测试很好)。正如我所说,IB 对我来说是新的,使用故事板方法看起来又不一样了 ;) (3) 鉴于我想要在启动图像中有一个导航栏,这是否比使用一个“更好”、更正确的方法单视图?从我有限的经验来看,手动添加导航栏似乎是一种“繁琐”的方法?干杯。 (1) 故事板和单一视图之间不应存在用户可察觉的性能差异。 (3) 使用单个视图文件的问题是在文件本身中为您的视图(处理大小等)设置控制器更加困难。在情节提要中设置控制器更容易,它允许您使用单个界面定义文件委托自动调整大小等,这对于启动屏幕来说很方便。 @LeonLucardie:使用故事板而不是 .xib 文件的好主意!但是,如果视图控制器上有任何 IBOutlets,您将获得黑色的启动图像。有关详细信息,请参阅this answer。 我收到“启动屏幕可能没有连接”错误。有人有解决方法吗? @sarunw 启动屏幕故事板不能在代码中具有实际的 ViewController 实现。它应该只是没有设置 viewcontroller 类或 IBOutlets 的故事板文件。

以上是关于iOS 8 启动图像文件 - 导航栏和状态栏的主要内容,如果未能解决你的问题,请参考以下文章

导航栏和状态栏颜色/不可见的 iOS

iOS 8 -- 对导航栏和状态栏应用模糊

在状态栏和导航栏之间添加图片

iOS 获取状态栏、导航栏、tabBar高度

如何在 IB 中设置导航栏和工具栏背景图像

导航栏和视图的整个图像