状态栏显示黑色文本,仅在iPhone 6 iOS 8模拟器上显示

时间:2014-09-16 12:47:02

标签: ios ios8 statusbar uistatusbar iphone-6

我试图将我的iOS 7应用程序转换为Xcode 6 GM中的iOS 8,当我在iOS 5或更低版本的iOS 8上运行它时一切都很好,但在iPhone 6和6 Plus上模拟器,状态栏有黑色文本而不是白色,就像任何时候其他地方一样。我已将Info.plist UIStatusBarStyle设置为"透明黑色样式(alpha为0.5)"通过Xcode,这似乎在其他地方都有所期望的效果。有什么想法发生了什么?

(我还没有接触到任何故事板,它可能与此有什么关系吗?我希望我可以把它关掉一段时间:)

14 个答案:

答案 0 :(得分:50)

所以这就是我修复它的方法

在PLIST中 查看基于控制器的状态栏NO 状态栏样式UIStatusBarStyleLightContent

在AppDelegate DidFinishLaunching

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.window setBackgroundColor:[UIColor whiteColor]];

在每个视图控制器中

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

答案 1 :(得分:42)

只有在缩放您的应用以适应新设备的分辨率时,才会出现此错误。

快速修复(谁知道这是否会在8.1中得到解决)是在应用包中提供正确的分辨率加载图像。

来自https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/

For iPhone 7, iPhone 6s, iPhone 6:

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

For iPhone 7 Plus, iPhone 6s Plus, iPhone 6 Plus:

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

在我的应用中,我们只支持肖像,因此提供750x1334和1242x2208修复它。

只是为了确认不明显,你需要使用UIStatusBarStyleLightContent作为状态栏样式。

答案 2 :(得分:16)

我的应用状态栏在iOS 7中仅使用项目/目标设置正常工作:

Status bar style = UIStatusBarStyleLightContent

View controller-based status bar appearance = NO

但在iOS 8(iPhone 6和iPhone 6 Plus模拟器)中,状态栏未显示。将基于控制器的状态栏外观更改为YES,然后添加:

    // Objective C
    - (UIStatusBarStyle) preferredStatusBarStyle {
         return UIStatusBarStyleLightContent;
    }
    //Swift
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
    }

到ViewController导致再次看到白色状态栏,但仅在初始根控制器启动后。在初始启动期间,状态栏保持黑色。

答案 3 :(得分:15)

一个类似的答案(目前被评为第二名)已经发布,为了保持这篇文章的最新信息而购买,这里是 Swift 版本。

  1. 在info.plist文件中添加一行名为查看基于控制器的状态栏外观,并将其布尔值设置为

    < / LI>
  2. AppDelegate.swift 文件中,添加以下方法: func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { UIApplication.sharedApplication().statusBarStyle = .LightContent return true }

  3. 我没有必要这样做才能使它工作(即执行步骤1和2,它可能会起作用)。如果没有,请尝试将以下方法添加到每个 ViewControllers

    override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }

  4. 我希望这很有帮助,

    卢瓦克

答案 4 :(得分:7)

  1. 打开Info.plist
  2. 添加名为“查看基于控制器的状态栏外观”(布尔值)的新属性,并将其值设置为“NO”
  3. 添加名为“状态栏样式”(字符串)的新属性,并将其值设置为“不透明的黑色样式”
  4. 完成。

答案 5 :(得分:6)

AppDelegate的{​​{1}}方法

中添加以下行
didFinishLaunchingWithOptions:

答案 6 :(得分:6)

步骤1:打开应用的info.plist文件,并将UIViewControllerBasedStatusBarAppearance设置为NO

第2步:应用的info.plist文件,并将“状态栏样式”设置为UIStatusBarStyleLightContent

答案 7 :(得分:3)

可能是模拟器的问题。使用此选项可覆盖特定视图控制器的默认状态栏或状态栏。

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
} //This is swift code

答案 8 :(得分:2)

我知道使用类别覆盖基类中的行为是不好的方式,但这可行,并且可能是解决它的最快解决方案。

第1步: 确保应用程序plist文件中的UIViewControllerBasedStatusBarAppearanceView controller-based status bar appearance设置为YES

步骤2:将以下代码添加到您的项目中:

@implementation UIViewController (StatusBarColorFix)

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

@end

答案 9 :(得分:1)

一个很好的解决方法是使用在iPhone 6型号上使用的新的启动图像笔尖支持。似乎iOS 8中只有一个错误,这意味着iPhone 6型号在启动时不会正确检查状态栏样式,但如果添加启动笔尖则会解决。

正如Aaron Wasserman所指出,你也可以指定iPhone 6&amp; 6+推出PNG,这似乎也解决了这个问题,只要你把它们设置正确!

答案 10 :(得分:0)

在Storyboard中选择根视图控制器并设置状态栏类型默认

答案 11 :(得分:0)

我已经执行了以下步骤,它们对我很有用,也应该在iOS 8+中工作。

1)添加了属性查看基于控制器的状态栏外观 =&gt; Info.plist中的 2)在 AppDelegate.m 的<{1}}中添加以下代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

3)覆盖 [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; [self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.

中的方法
ViewController

答案 12 :(得分:0)

对于swift 4和iOS 11

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}

答案 13 :(得分:0)

以下是关于状态栏/文字颜色变化的Apple Guidelines/Instruction

以下是 - 如何更改状态栏样式:

如果要设置状态栏样式,应用程序级别,然后在`.plist&#39;中将UIViewControllerBasedStatusBarAppearance设置为NO。文件。

或者以编程方式,您可以从App Delegate:

进行操作
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}

如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:

  1. 如果您只需要在UIViewController级别设置状态栏样式,请在UIViewControllerBasedStatusBarAppearance文件中将YES设置为.plist
  2. 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate

  3. 覆盖视图控制器中的preferredStatusBarStyle。

  4. -

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setNeedsStatusBarAppearanceUpdate()
    }
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    根据状态栏样式设置级别设置.plist的值。 enter image description here