【问题标题】:iPhone: problems with translucent black uistatusbar with view layoutiPhone:带有视图布局的半透明黑色uistatusbar问题
【发布时间】:2011-10-07 06:04:52
【问题描述】:

我的状态栏有一些问题。这是一个 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 条目之外,我还尝试以编程方式设置状态栏样式,但它没有任何效果(在任何这些选项卡上)。

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

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

【问题讨论】:

    标签: iphone ios layout translucency uistatusbar


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好的,谢谢。我不知道我从哪里得到它(你引用的错误信念)。可能记错了我读过的东西与观察到的行为混合在一起,得出了错误的结论。
    • 但是,我仍然有同样的问题。 MainWindow.xib 中有一个标签栏控制器,其中有 5 个导航控制器作为标签。我在 IB 中设置的每个都想要FullScreenLayout。每个都有一个视图控制器,我还为 IB 中的每个设置了 wantFullScreenLayout。我将每个视图控制器中的背景图像设置为 0,0 320w 480h。第一个选项卡看起来仍然正确,其他选项卡在状态栏下有 nada,所以它在状态栏下看起来仍然一样——半透明的黑色覆盖白色而不是我的背景。 (各种视图内容确实像预期的那样上移了 20 像素)
    • 顺便说一句,我的设置选项卡的第二个问题已通过 WantsFullScreenLayout 100% 修复。在每个 pushViewController 上以编程方式完成:谢谢!
    • 仍在为此苦苦挣扎。我确实用 IB 中的 WantsFullScreenLayout 更新了每个控制器(标签栏控制器、标签栏控制器中的每个导航控制器以及每个导航控制器中的每个根视图控制器)。这确实解决了最后一个选项卡的问题(以及以编程方式为推送的 VC 执行此操作),即我在上面提到的设置。但是,其他选项卡仍然是相同的问题(在我将所有图像来源更正为 0,0 而不是 0,-20 之后)。第一个是正确的,其他 3 个将视图背景“裁剪”到状态栏下方。
    • 你真的需要展示一些代码。恐怕我的帮助范围有限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多