当Shazam打开时,由于背景录制,状态栏变为红色并使其高度加倍,但这会破坏我应用中的UI。我现在正在尝试更改我的代码以支持不同的状态栏大小,因为红色状态栏也是不透明的,但由于这个原因我无法提出一般解决方案:
当状态栏最初为红色时,当我启动应用时,启动图像会缩放并毁掉。如何解决这个问题?
注意:我的应用不使用录音。
[编辑]
我找到的唯一解决方案是在.plist中将“状态栏最初隐藏”设置为YES。我不需要状态栏在应用程序启动时可见,特别是当状态栏比平时更高时,即在录制时或在通话期间影响我的启动图像时。
[编辑2]
有些情况下,当应用从背景状态转到前台时,启动图像会短暂可见。为了解决这个问题,我使用了基于视图控制器的状态栏外观:
- (BOOL)prefersStatusBarHidden
{
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
return YES;
}
return NO;
}
这可确保在应用程序到达前台时始终隐藏状态栏,因此启动图像永远不会受到影响。不要忘记在setNeedsStatusBarAppearanceUpdate
通知appDidEnterBackground
和({1}}通知中的(动画块内)。
答案 0 :(得分:3)
红色状态栏是系统功能。你无法解决这个问题 - 而且它并不是你的“错误”。如果启动屏幕看起来如此 - 如果用户想要在使用Shazam时打开您的应用程序,他们将看到红色条,并且将启动启动图像。您可以将启动图像更改为缩放时看起来很好,但是在其余时间它会看起来很糟糕(当启动时红色条不在屏幕顶部)。
答案 1 :(得分:0)
经过长期漫长的长期研究和障碍后,我发现了以下的简单解决方案
在Targets-> General->部署信息中检查HideStatusBar选项
如下所示!
在viewDtroller(你在RootViewController中保存的那个)中,在viewDidAppear中添加这行代码......
[[UIApplication sharedApplication] setStatusBarHidden:NO];
因为当您取消选中HideStatusBar选项并且您的应用需要任何后台进程或音频相关进程时,状态栏将变为红色并且高度增大。如果您不想在整个应用程序中使用状态栏,则不要在viewDidAppear中添加上述行并选中HideStatusBar Option。