【问题标题】:Changing the status bar text color in splash screen iOS 7更改初始屏幕 iOS 7 中的状态栏文本颜色
【发布时间】:2013-09-24 16:42:34
【问题描述】:

我知道已经有一些 stackoverflow questions 说明如何更改所有视图控制器的状态栏。我目前正在以这种方式更改状态栏的颜色:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

application:DidFinishLaunching

另外,我把plist中UIViewControllerBasedStatusBarAppearance的值改成了NO。但是,在启动画面中,它仍然以黑色显示状态栏文本。

是否可以在启动画面中更改状态栏文本颜色的颜色?

【问题讨论】:

  • 你的意思是'它仍然显示黑色的状态栏':如果你的代码有效,状态栏字体应该是白色,状态栏背景颜色取决于你的启动图像(现在应该包括状态栏高度 - 20 像素)
  • 对不起,我真的错过了文字。我只更改状态栏的文本颜色。我可以在启动画面发生后更改它,但当启动画面发生时我无法更改它。

标签: ios ios7 splash-screen statusbar uistatusbar


【解决方案1】:

在项目 plist 文件中添加“状态栏样式”属性(键为 UIStatusBarStyle)。然后忽略该属性下拉列表中列出的所有可能值,而是输入UIStatusBarStyleLightContent

而且您不必在 plist 中将 UIViewControllerBasedStatusBarAppearance 设置为 NO,您可以将所需的 preferredStatusBarStyle 设置为视图控制器。

【讨论】:

  • 有什么办法让它与 iOS 6 上的有色状态栏兼容?
  • 状态栏的文字颜色可以是白色,也可以是黑色。栏的背景来自您的启动图像,如果它延伸到栏下方,则来自您的 viewController 的视图。
  • 在使用了很多不同的方法之后,这个方法终于奏效了(UIViewControllerBasedStatusBarAppearance 设置为 NO)。你是英雄。
  • 你也可以通过代码 UIApplication.sharedApplication().statusBarStyle = .LightContent.我在 AppDelegate 中做
  • @Yasmin :在启动画面之后改变颜色,这个解决方案已经是问题的一部分;)
【解决方案2】:

您无需编写任何代码即可做到这一点
执行以下操作以使整个应用程序的状态栏文本颜色为白色

你的项目plist文件:

  • 状态栏样式:UIStatusBarStyleLightContent
  • 查看基于控制器的状态栏外观:NO
  • 状态栏最初是隐藏的:NO

【讨论】:

  • 接受的答案很好,但如果不执行上面的第二个项目符号,它就不适用于我所有的视图控制器。谢谢!
  • “查看基于控制器的状态栏外观:YES”似乎仍然可以解决问题(iOS 9)
【解决方案3】:

您可以执行以下操作以在整个应用程序中获取浅色状态栏。

  1. 在项目导航器中选择项目名称。
  2. 从项目编辑器左列的列表中选择目标的名称。
  3. 点击项目编辑器顶部的常规。
  4. 设置状态栏样式 -> 浅色

在您的 plist 文件中添加以下值:

  1. 状态栏样式 - UIStatusBarStyleLightContent
  2. 查看基于控制器的状态栏外观 - 否

这将帮助您在整个应用程序(包括 SPLASH SCREEN)中获得白色状态栏。

【讨论】:

    【解决方案4】:

    在 plist 中将UIViewControllerBasedStatusBarAppearance 设置为否

    然后在完成启动选项中添加以下代码

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    
       [application setStatusBarStyle:UIStatusBarStyleLightContent];
    
        self.window.clipsToBounds =YES;
    
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
    }
    

    请按照对我有用的代码进行操作

    【讨论】:

    • 这在状态栏上显示白色文本,而我的背景也很浅。如何显示黑色文本
    • 目标上的 Mangesh 转到常规设置,您将可以选择设置状态栏样式
    • 您实际上可以使用点语法将第一行写得更简单一些,如下所示:if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
    【解决方案5】:

    这里是Apple Guidelines/Instruction,关于状态栏的变化。

    这里是 - 如何更改状态栏样式:

    如果你想设置状态栏样式,应用程序级别然后在你的`.plist'文件中设置UIViewControllerBasedStatusBarAppearanceNO

    如果您想设置状态栏样式,请在视图控制器级别执行以下步骤:

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

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

    -

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

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


    您可以在应用程序启动期间或视图控制器的 viewDidLoad 期间设置状态栏的背景颜色。

    extension UIApplication {
    
        var statusBarView: UIView? {
            return value(forKey: "statusBar") as? UIView
        }
    
    }
    
    // Set upon application launch, if you've application based status bar
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
            return true
        }
    }
    
    
    or 
    // Set it from your view controller if you've view controller based statusbar
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        }
    
    }
    



    结果如下:

    【讨论】:

      【解决方案6】:

      您可以执行以下操作以在整个应用程序中获取浅色状态栏。

      在项目导航器中选择项目的名称。 从项目编辑器左列的列表中选择目标的名称。 单击项目编辑器顶部的常规。 设置状态栏样式 -> Light

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-19
        • 2015-09-08
        • 2013-11-02
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多