23

有没有人注意到 iPhone 6 模拟器的状态栏颜色没有使用正确的样式?

我已经UIStatusBarStyle设置UIStatusBarStyleLightContentUIViewControllerBasedStatusBarAppearance设置为NO

这适用于 iOS8 上的所有手机,除了 6 和 6 Plus。在我的 appDelegate 中,我可以使用它进行设置,UIApplication.sharedApplication().setStatusBarStyle(.LightContent, animated: false)但这不会为启动屏幕设置它。当我想要浅色内容时,它仍然想要深色。有没有人可以解决这个问题。我需要添加 plist 的新项目吗?

4

4 回答 4

15

一种选择是在plist中设置UIViewControllerBasedStatusBarAppearanceYES,然后在每个视图控制器中都有这个方法

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

这样做很痛苦,绝对不是最好的解决方案。就目前而言,这适用于我所有的视图控制器,但一个,我仍在为此寻找替代解决方案。

编辑

找到了更好的解决方案。在 plist 中保留UIViewControllerBasedStatusBarAppearancetoNOStatus bar styleto ,然后通过从 Image Assets 中选择来添加正确的启动图像。这将阻止 iPhone 6/6+ 将应用程序放大到屏幕大小并显示灯光状态栏。正确的屏幕尺寸是:UIStatusBarStyleLightContent+ -> New Launch Image

iPhone 4/4S: 640x960 px
iPhone 5/5S: 640x1136 px
iPhone 6:    750x1334 px (edited)
iPhone 6+:   1242x2208 px

我不能对此表示赞赏,只是证明它有效。这是我找到解决方案的地方https://stackoverflow.com/a/25985800/3247035http://beageek.biz/how-to-create-launch-images-app-xcode-ios/

于 2014-09-23T13:06:50.793 回答
7

我有同样的问题并解决了

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setNeedsStatusBarAppearanceUpdate];
}

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

我很懒,所以我创建了一个控制器来添加它,所有其他人都继承它

于 2014-11-13T01:33:48.497 回答
1

我在回复这篇文章时也提到了这一点,但我发现的唯一解决方法是将您的应用程序转换为使用 iPhone 6 和 6+ 资产。

在资产管理器中提供正确大小的加载屏幕资产后,您的应用将尊重您的状态栏样式设置。

来自https://developer.apple.com/library/iOS/documentation/userexperience/conceptual/mobilehig/LaunchImages.html

For iPhone 6:

750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape

For iPhone 6 Plus:

1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape

您还应该仔细检查您是否将状态栏样式设置为 UIStatusBarStyleLightContent。这可以通过两种方式完成:

  • 在应用程序的 info.plist 中设置 UIStatusBarStyle = UIStatusBarStyleLightContent
  • 覆盖项目中所有适用的 UIViewController 中的方法 preferredStatusBarStyle:。(对于此选项,请确保在您的应用程序的 info.plist 中有 UIViewControllerBasedStatusBarAppearance = YES)
于 2014-09-23T16:14:01.360 回答
0

pfryerda 的答案是正确的,启动图像是问题的解决方案。我在不知不觉中解决了我的问题。我使用了Launch Screen FileGeneral Info 选项卡的新部分,并将我的启动屏幕设置为它自己的独立故事板。在情节提要中,我创建了一个调整为全屏大小的视图,并且我知道这个问题的时间更长,因为启动屏幕的大小始终是正确的。

回顾一下如何创建启动屏幕故事板:

  1. 创建一个名为 LaunchScreen.storyboard 的空白故事板文件。

  2. 转到您的目标设置,然后在“常规”选项卡上,选择情节提要作为启动屏幕文件。Xcode 会在你的应用的 Info.plist 中添加一个对应的 UILaunchStoryboardName 键。当这个键存在时,Xcode 将优先于你可能设置的任何启动图像。

  3. 将视图控制器场景添加到情节提要。将一些子视图添加到场景中并使用约束定位它们。当您在设备上启动应用程序时,操作系统应使用场景作为启动屏幕。

你可以在这里找到更多信息:http: //oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

于 2014-09-23T15:00:11.677 回答