iPhone:半透明的黑色uistatusbar与视图布局的问题

时间:2011-07-17 19:08:43

标签: iphone ios layout translucency uistatusbar

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

在app plist中设置状态栏样式。它设置为黑色半透明。

我的理解是,当设置此项时,所有视图的布局将从0,0而不是0,20开始,就像您拥有不透明状态栏时一样。这就是为什么IB允许您选择指定您将使用哪种状态栏的提示,以便它可以模拟它并在IB中正确显示它。 (是的,我在IB中的所有视图都设置为显示黑色半透明状态栏)。布局从0,0完成,因此状态栏将覆盖您的视图以显示内容。在IB中它工作正常。但在我的应用程序中却没有。

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

以下是一些图片:

它应该如何显示(但仍然必须将背景设置为0,-20): This is how it should look

具有完全相同设置的另一个标签如下所示:bad another tab

为了确保它是一个没有叠加背景的blacl半透明状态栏,我尝试了它没有背景:no background

和另一种背景(替代品是直的蓝色,没有轻微的拉丝效果):alternative background

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

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

我认为“正常工作”不起作用,但看起来好像是由于背景视图中的负偏移。我认为它实际应该设置为0,0并且工作。但是主要的IB提供的视图的原点设置为0,20并且它显示为灰色,因此我无法更改它。

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

向下钻取到nib支持的视图,它们看起来一样:settings nib backed

这些视图的布局好像是一个灰色的状态栏,下降了20像素(在IB中它们被设置为黑色半透明,所以我将它们放置了20像素更高)

我已尝试以编程方式设置状态栏样式以及app plist条目,但它没有任何效果(在任何这些选项卡上)。

我一直在研究这个问题(Google,stackoverflow,apple.com)几个星期。但没有发现我应该做什么的迹象。

ETA:wantsFullScreenLayout解决了其中一个问题,所以我将此标记为已解决。我已经针对最初提出的两个问题中的一个问题更新了一个新问题,包括新的图片,描述等以及更适用的标题,因为问题不是uistatusbar本身。新问题是在 new problem

1 个答案:

答案 0 :(得分:5)

  

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

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

现在视图控制器的视图是另一回事。默认情况下,它们的帧被设置为applicationFrame的{​​{1}}属性(换句话说,屏幕的边界减去状态栏占用的区域)。这就是为什么你不能让背景颜色显示在半透明状态栏后面。

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