【问题标题】:iPhone 6 Status bar coloriPhone 6 状态栏颜色
【发布时间】: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 兼容版本)。

标签: ios ios8 ios-simulator statusbar iphone-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://stackoverflow.com/a/25985800/3247035http://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 部分,并将我的启动屏幕设置为它自己的独立故事板。在情节提要中,我创建了一个调整为全屏大小的视图,并且我知道这个问题的存在时间更长,因为启动屏幕始终是正确的大小。

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2018-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2015-11-20
        • 2011-08-13
        相关资源
        最近更新 更多