【问题标题】:iOS 7 red status bariOS 7 红色状态栏
【发布时间】:2014-09-11 17:25:56
【问题描述】:

当打开 Shazam 时,状态栏会变为红色,并且由于后台录制而将其高度加倍,但这会破坏我应用中的 UI。我现在正在尝试更改我的代码以支持不同的状态栏大小,因为红色状态栏也是不透明的,但因此我无法提出通用解决方案:

当状态栏最初为红色时,当我启动我的应用程序时,启动图像被缩放并损坏。如何解决这个问题?

注意:我的应用不使用录音。

[编辑]

我找到的唯一解决方案是在 .plist 中将“状态栏最初隐藏”设置为“是”。我真的不需要在应用启动时显示状态栏,尤其是当状态栏比平时高时它会影响我的启动图像,即在录制或通话期间。

[编辑 2]

在某些情况下,当应用从后台状态进入前台时,启动图像会短暂可见。为了解决这个问题,我使用基于视图控制器的状态栏外观:

- (BOOL)prefersStatusBarHidden
{
    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
    {
        return YES;
    }

    return NO;
}

这确保了当应用程序进入前台时状态栏始终处于隐藏状态,因此启动图像永远不会受到影响。不要忘记在appDidEnterBackground 和(在动画块内)在appDidBecomeActive 通知上调用setNeedsStatusBarAppearanceUpdate

【问题讨论】:

  • 在这种情况下,所有应用的启动图像都会缩放。这是你唯一的问题吗?
  • @maddy 是的,它真的很丑。我不知道它是否被缩放,但看起来像是在中间水平切割了一部分,因为在底部我的应用名称仍然看起来不错。
  • 这不仅限于红色状态栏。它也适用于普通电话时的绿色状态栏。您唯一的选择是创建一个在状态栏较高时看起来合理的启动图像。
  • 我不知道如何实现,因为这会影响状态栏正常时的启动图像。实际上,我正在寻找一种解决方案,让我的启动图像在两种情况下都可以正常显示,无论状态栏高度如何。
  • 您无法控制它,只能设计一个正常时和“压扁”时看起来不错的图像。

标签: ios statusbar launch


【解决方案1】:

红色状态栏是系统功能。您将无法解决此问题 - 如果启动屏幕看起来像这样,这并不是您的“错” - 如果用户想在使用 Shazam 时打开您的应用程序,他们将看到红色条并且启动图像将被缩放。您可以将启动图像更改为在缩放时看起来不错,但在其余时间看起来会很糟糕(当红色条不在启动时屏幕顶部时)。

【讨论】:

  • 感谢您的回答。实际上,当状态栏较高时,我可以以某种方式将图像更改为看起来不错,但这只是解决方案的一半。我宁愿保留解决方案的另一半,即状态栏高度正常时的图像。
【解决方案2】:

经过很长很长很长的研究和障碍,我找到了以下简单的解决方案

在 Targets->General->Deployment Info 中检查 HideStatusBar 选项

如下图!

并且在viewDidAppear的ViewController(你保存为RootViewController的那个)中添加这行代码...

    [[UIApplication sharedApplication] setStatusBarHidden:NO];

因为当您取消选中 HideStatusBar 选项并且您的应用需要任何后台进程或音频相关进程时,状态栏将变为红色并放大高度。如果您不想在整个应用程序中显示状态栏,则不要在 viewDidAppear 中添加上述行并检查 HideStatusBar 选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多