iPhone 6 状态栏颜色

Posted

技术标签:

【中文标题】iPhone 6 状态栏颜色【英文标题】:iPhone 6 Status bar color 【发布时间】:2014-11-06 00:47:56 【问题描述】:

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

我将UIStatusBarStyle 设置为UIStatusBarStyleLightContent 并将UIViewControllerBasedStatusBarAppearance 设置为NO

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

【问题讨论】:

遇到同样的问题,不知道是模拟器bug还是别的什么? 对我来说似乎是模拟器问题。 这里有同样的问题。但它仅在发布时。加载视图后,它会变为白色。 我在实际设备(iPhone 6)上也遇到了启动时样式不正确的问题(在视图加载时已更正)。目前,该应用程序使用的是 iOS 7 SDK 和 Xcode 5.1.1。 (在跳转到 iOS 8 SDK 之前做一个最终的 iOS 6 兼容版本)。 【参考方案1】:

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

- (UIStatusBarStyle) preferredStatusBarStyle 
    return UIStatusBarStyleLightContent;

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

编辑

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

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

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

【讨论】:

在我的例子中,我必须在我的故事板中继承我的 UINavigationControllers 并将preferredStatusBarStyle 方法放在那里。将它放在导航的控制器中没有任何作用。 @pfryerda 的第一个解决方案解决了我的问题,并没有太多额外的工作。【参考方案2】:

我遇到了同样的问题,解决了

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


-(UIStatusBarStyle)preferredStatusBarStyle
    return UIStatusBarStyleLightContent;

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

【讨论】:

【参考方案3】:

我在回复this post 时也提到了这一点,但我发现的唯一解决方法是将您的应用转换为使用 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)

【讨论】:

【参考方案4】:

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

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

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

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

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

您可以在此处了解更多信息:http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

【讨论】:

以上是关于iPhone 6 状态栏颜色的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 上切换应用时更改状态栏颜色的问题

如何更改 iPhone 应用程序中状态栏的颜色? [复制]

iphone - 标签栏设置图像色调颜色(状态)

iPhone XR 上的状态栏文本颜色不同

iOS 状态栏更改颜色

iPhone 5/SE 显示白色状态栏,iPhone 6/7 显示黑色状态栏