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