ChatGPT解决这个技术问题 Extra ChatGPT

更改初始屏幕 iOS 7 中的状态栏文本颜色

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

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

application:DidFinishLaunching

此外,我已将 plist 中 UIViewControllerBasedStatusBarAppearance 的值更改为 NO。但是,在启动画面中,它仍然以黑色显示状态栏文本。

是否可以更改初始屏幕中状态栏文本颜色的颜色?

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

V
Vinzzz

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

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


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

您可以在不编写任何代码的情况下执行此操作执行以下操作以使整个应用程序的状态栏文本颜色为白色

在您的项目 plist 文件中:

状态栏样式:UIStatusBarStyleLightContent

查看基于控制器的状态栏外观:否

状态栏最初是隐藏的:否


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

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

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

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

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

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


T
Tiago Almeida

在 plist 中将 UIViewControllerBasedStatusBarAppearance 设置为 No

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

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) {
K
Krunal

以下是关于状态栏更改的Apple Guidelines/Instruction

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

如果要设置状态栏样式、应用程序级别,则在“.plist”文件中将 UIViewControllerBasedStatusBarAppearance 设置为 NO

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

如果您只需要在 UIViewController 级别设置状态栏样式,请在 .plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 YES。在 viewDidLoad 添加函数 - setNeedsStatusBarAppearanceUpdate 覆盖视图控制器中的 preferredStatusBarStyle。

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

https://i.stack.imgur.com/8sH5i.png

您可以在应用程序启动期间或视图控制器的 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
    }

}

这是结果:

https://i.stack.imgur.com/LKppl.png


U
Usman Nisar

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

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