3

我的状态栏有一些问题。这是一个 iPhone 应用程序,而不是一个 iPad 应用程序。我想在应用程序的任何地方都有一个黑色半透明状态栏。

已经在应用 plist 中设置了状态栏样式。它设置为黑色半透明。

我的理解是,设置此选项后,所有视图的布局将从 0,0 而不是 0,20 开始,就像您有不透明状态栏时那样。这就是为什么 IB 为您提供选项来指定您将使用哪种状态栏的提示,以便它可以模拟它并在 IB 中正确显示它。(是的,我在 IB 中的所有视图都设置为显示黑色半透明状态栏)。布局从 0,0 开始,因此状态栏将覆盖您的视图以显示某些内容。在 IB 中它运行良好。但在我的应用程序中没有。

我的应用程序是一个基于标签栏的应用程序,只有一个视图看起来正确,即使它们都设置相同。为了让那个视图工作,我必须将背景视图图像设置为 0,-20,主视图设置为不剪辑子视图。所以看起来黑色半透明的布局不能正常工作。此外,我所有其他选项卡视图都以相同的方式设置,而不是剪辑子视图并将主背景视图设置为 0,-20。但只有在第一个选项卡中,这才真正“起作用”。

以下是一些图片:

它应该是什么样子(但仍然必须将背景设置为 0,-20): 这是它应该看起来的样子

另一个具有完全相同设置的选项卡如下所示:坏另一个标签

为了确保它是一个没有背景的黑色半透明状态栏,我在没有背景的情况下尝试了它:没有背景

和一个替代背景(替代是纯蓝色,没有轻微的拉丝效果): 替代背景

因为所有三个不起作用的示例(无背景、实际和替代)上的状态栏看起来完全相同,我假设状态栏是正确的排序,黑色半透明,但后面没有任何东西可以显示。

我的几个选项卡都有这个问题,所有在选项卡中循环通过导航控制器的视图都有这个问题。并且它们都设置为与“工作”选项卡相同,“剪辑子视图”设置为 NO,背景的原点设置为 0,-20

我认为“工作”的那个不起作用,但看起来是由于背景视图中的负偏移造成的。我认为它实际上应该设置为 0,0 并且可以工作。但是 IB 提供的主要视图的原点设置为 0,20,并且它是灰色的,所以我无法更改它。

此外,我在一个选项卡上还有另一个问题,一个设置选项卡,我使用不同的外观和感觉(更像 iPhone),黑色半透明甚至没有生效。我从一个以编程方式构建的视图开始,它显示了一个灰色的状态栏: 以编程方式构建的设置

并深入到 nib 支持的视图,它们看起来是一样的:设置笔尖支持

并且视图的布局就像是一个灰色状态栏,向下 20 像素(在 IB 中它们被设置为黑色半透明,所以我将它们布局高 20 像素)

除了应用程序 plist 条目之外,我还尝试以编程方式设置状态栏样式,但它没有效果(在这些选项卡中的任何一个上)。

我一直在研究这个(谷歌,stackoverflow,apple.com)好几个星期了,断断续续。但没有发现我应该做什么的迹象。

ETA: wantsFullScreenLayout解决了其中一个问题,所以我将其标记为已解决。我已经打开了一个新问题,更新了这里最初提出的两个问题之一,新的图片、描述等以及更适用的标题,因为问题不是 uistatusbar 本身。新问题是 新问题

4

1 回答 1

4

“我的理解是,设置此选项后,所有视图的布局将从 0,0 而不是 0,20 开始,就像您有不透明状态栏时那样。”

你是在哪里拿到的?应用程序窗口的框架将保持原样,默认情况下它位于 (0,0) 并且它将保持在那里 - 它不关心状态栏的外观。

现在视图控制器的视图,是另一回事。默认情况下,它们的框架设置为的applicationFrame属性UIScreen(换句话说,屏幕的边界减去状态栏占用的区域)。这就是为什么您无法在半透明状态栏后面显示背景颜色的原因。

尝试将组成标签栏的每个视图控制器的wantsFullScreenLayout属性设置为YES 。它将根据您的需要将帧带到(0,0)。

于 2011-07-18T00:04:57.807 回答