如何在iOS中更改状态栏文本颜色

Ole*_*huk 975 statusbar textcolor ios uistatusbar ios7

我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,只有角落里的绿色电池指示灯.如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?

Pet*_*mer 1362

  1. 在.plist文件中设置UIViewControllerBasedStatusBarAppearanceto YES.

  2. viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];

  3. 添加以下方法:

    - (UIStatusBarStyle)preferredStatusBarStyle
    { 
        return UIStatusBarStyleLightContent; 
    }
    
    Run Code Online (Sandbox Code Playgroud)

注意:这不适用于内部控制器UINavigationController,请参阅Tyson的评论 :)

Swift 3 - 这将控制内部UINavigationController.在控制器中添加此代码.

// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
Run Code Online (Sandbox Code Playgroud)

  • **UINavigationController**是一个特殊情况,以上都行不通.花了好几个小时在我身上挠头.请参阅此处获取解决方案:http://stackoverflow.com/a/19513714/505457 (100认同)
  • 我不需要第2步. (78认同)
  • 得到了Xcode GM Seed的答案:1.在Info.plist中,将基于View控制器的状态栏外观设置为NO 2.在appDelegate中,在appDidFinishLaunching方法内,放置[[UIView appearance] setTintColor:[UIColor whiteColor]]; (42认同)
  • 似乎没有使用Xcode5-DP5在iOS 7 Beta 5上运行.似乎没有调用preferredStatusBarStyle. (37认同)
  • UIViewControllerBasedStatusBarAppearance更改为在Xcode 5 GM种子中查看基于控制器的状态栏外观 (18认同)
  • 也不需要步骤1.默认情况下该值为true. (6认同)
  • 我可以确认,对于我来说,使用iOS 7,我只需要执行第3步.谢谢! (4认同)
  • 使用这个泛型可以让您传递任何View类,而不仅仅是ContentView()```class HostingController <Content>:UIHostingController <Content>其中Content:View {...}``` (3认同)
  • 我刚刚使用iOS 7模拟器和Xcode5-DP5使用它,它的工作原理.但只需要第3步. (2认同)
  • 如果嵌入了ViewController,则必须在preferredController中放置preferredStatusBarStyle.无需将preferredStatusBarStyle设置为YES,因为它是默认值. (2认同)
  • @wilsontgh:对于那些面临"preferredStatusBarStyle"问题没有被调用的人来说,[preferredStatusBarStyle没有被调用]提供的答案(http://stackoverflow.com/a/19032879/336656)可能有所帮助. (2认同)
  • 感谢您实施 HostingController!有没有办法进行设置,以便可以从 SwiftUI 更改状态栏颜色,具体取决于视图是否应使用白色或黑色状态栏? (2认同)

wil*_*tgh 844

或者,您可以选择退出基于视图控制器的状态栏外观:

  1. 设置View controller-based status bar appearanceNOInfo.plist.
  2. 呼叫 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

注意:此方法已在iOS9中弃用.请改用preferredStatusBarStyleUIViewController.(参见Apple Developer Library)

  • 无需编码.它可以通过plist完成:(1)将"View controller-based status bar appearance"设置为NO,(2)将"Status bar style"设置为"Opaque black style".(原始值为UIViewControllerBasedStatusBarAppearance - > NO和UIStatusBarStyle - > UIStatusBarStyleBlackOpaque) (227认同)
  • This is a much better and easier route. (16认同)
  • @gothicdev:很好听.会接受你的回答,因为它是最干净的.Bar Style的Light选项可以是:UIStatusBarStyleLightContent (9认同)
  • 此方法已在iOS 9中弃用. (7认同)
  • 适用于iOS 7 GM (3认同)
  • 请注意,您_must_将相关的info.plist值设置为NO,以使其生效. (3认同)
  • @gothicdev - 任何想法为什么"不透明黑色风格"和"透明黑色风格(0.5的alpha)"是透明背景上的白色字体,而"灰色风格(默认)"是透明背景上的黑色字体?(并不是说我认为这些都有意义.) (2认同)
  • 我认为谁弃用这个是一个愚蠢的白痴.我需要状态栏样式以保持每个应用程序的一致性.我的框架中的VC被重用,一个应用程序可能需要轻巧的外观而另一个应用程序需要一个黑暗的外观. (2认同)

Luc*_*cas 434

您无需编写任何代码即可完成此操作!
执行以下操作以使状态栏文本颜色在整个应用程序中变为白色

在你的项目plist文件:

  • 状态栏样式: Transparent black style (alpha of 0.5)
  • 查看基于控制器的状态栏外观: NO
  • 状态栏最初是隐藏的: NO

  • 对于像我这样的懒人,复制并过去:`<key> UIStatusBarStyle </ key> <string> UIStatusBarStyleLightContent </ string> <key> UIViewControllerBasedStatusBarAppearance </ key> <false /> (44认同)
  • 我不知道是否有变化,但XCode无法识别UIStatusBarStyleLightContent值,并且在任何文档中都找不到......虽然它似乎有效. (12认同)
  • 这个也在启动画面上改变了它,而只是在导航器上设置它不会......赞誉! (5认同)
  • 在`plist info`中没有任何叫做'UIStatusBarStyleLightContent`的东西.但是有'Transparent Black`会做同样的伎俩:)另外,你需要添加`查看基于控制器的状态栏外观',因为它原来不存在这就是你需要它才能让它发挥作用:) (4认同)
  • 绝对是完成这项工作的最简单方法,如上所述也适用于启动画面. (3认同)
  • 请注意,即使您没有在下拉列表中看到"UIStatusBarStyleLightContent"作为选项,您仍然可以使用它(只需将其粘贴或自行输入)即可使用. (2认同)
  • 这是解决方案!甚至可以在iOS 8中使用,就像其他人提到的那样. (2认同)

Pra*_*evu 240

注意:大多数upvoted答案不适用于iOS 7/8

在Info.plist中,将"查看基于控制器的状态栏外观"设置为NO

在AppDelegate中添加

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ......
   ...
}    
Run Code Online (Sandbox Code Playgroud)

此解决方案适用于iOS 7/8

  • iOS 9中不推荐使用: - / (10认同)
  • 好的解决方案 它也适用于iOS8. (2认同)

har*_*tin 111

对我来说,在其他答案(以及其他来源/文档)中使用所有内容时没有任何反应.有什么帮助是在XIB中将导航栏样式设置为"黑色".这将文本更改为白色而没有任何代码.

在此输入图像描述

  • 在设备中,上面的答案都没有对我有用,但是这个.我认为它告诉了你必须将_navigation_bar_设置为BLACK以使_status_bar_文本为WHITE的新系统的所有内容. (3认同)
  • 在iOS7 Storyboard中对我不起作用.看起来这可能是副作用的其他东西? (3认同)
  • 在经历了很多事情后,这就结束了.样式设置为默认值.改变了这一点,并删除了所有其他状态栏黑客,它的工作原理. (2认同)

ste*_*k21 97

这些都不适合我,所以这是一个有效的解决方案......

Info.plist,添加一行:

UIViewControllerBasedStatusBarAppearance,并设置值NO.

然后在AppDelegate中didFinishLaunchingWithOptions,添加以下行:

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)


Aji*_*til 62

你不需要为此做任何代码

您需要在info.plist中添加"查看基于控制器的状态栏外观"键,如下所示: 在此输入图像描述

并将其值类型设置为布尔值,将值设置为NO.然后点击项目设置,然后单击常规选项卡和下部署信息的最佳状态栏样式设置为.Light如下:

在此输入图像描述

而已.


fol*_*lse 48

只需两步如下:

步骤1:

在" project target添加行"的"信息"选项卡下:

UIViewControllerBasedStatusBarAppearance,设定价值NO.

第2步:

在项目中AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个答案,这是我第一次使用"应用程序"参数)) (4认同)

Den*_*ovs 43

这适用于2013年9月18日发布的Golden Master iOS 7和Xcode 5 GM种子和iOS7 SDK(至少隐藏了导航控制器):

  1. 设置the UIViewControllerBasedStatusBarAppearanceNOInfo.plist.

  2. ViewDidLoad方法或任何地方,您想在哪里更改状态栏样式: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Moh*_*lia 32

如果您的UIViewController在UINavigationController中,您将必须设置BarStyle:

-[UINavigationBar setBarStyle:UIBarStyleBlack]
Run Code Online (Sandbox Code Playgroud)

原始答案在这里

https://devforums.apple.com/message/844264#844264

  • 在iOS7中,如果视图包含UINavigationController,状态栏将模仿UINavigationBar,因此在许多情况下,这是正确的答案. (2认同)

小智 29

如果您有通过Interface Builder创建的嵌入式导航控制器,请务必在管理导航控制器的类中设置以下内容:

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 
Run Code Online (Sandbox Code Playgroud)

这应该就是你所需要的.

  • 当我需要在每个视图控制器中设置不同的样式时,这对我来说是完美的 (2认同)

小智 27

我在Swift项目中使用Xcode 6 beta 5 ,用于iOS 7应用程序.

这是我做的,它的工作原理:

info.plist中:

在此输入图像描述

  • 谢谢它看起来只有你的解决方案使用最新版本的IOS7 (2认同)

neo*_* D1 22

在AppDelegate.m中,添加以下内容.

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

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

} 
Run Code Online (Sandbox Code Playgroud)

在Plist文件中,将"查看基于控制器的状态栏外观"设置为NO.


Sha*_*bal 20

嗯,这对我来说真是一块蛋糕.

转到您的应用程序info.plist.

  1. 设置View controller-based status bar appearanceNO
  2. 设置Status bar styleUIStatusBarStyleLightContent

然后转到您的应用程序代理并粘贴以下代码,您可以在其中设置Windows的RootViewController.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}
Run Code Online (Sandbox Code Playgroud)

答对了.它对我有用.


Viv*_*wat 20

简单地在Appdelegate

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)

  • 但为此我们需要选择退出**查看基于控制器的状态栏外观**. (6认同)
  • 唯一真正对我有用的答案. (5认同)

Wan*_*hoi 20

  1. 转到Project- > Target,

  2. 然后设置Status Bar StyleLight.它使状态栏从启动屏幕变为白色. 项目设定

  3. 然后设置View controller-based status bar appearance等于NOin Info.plist.

  • 将实际的`基于控制器的状态栏外观等于'设置为"否"的第二部分是我缺少的部分.谢谢 (2认同)

Jam*_*run 18

改变信息PLIST 在Swift 3中只需2步即可轻松实现.转到info.plist并将密钥更改View controller-based status bar appearance为"NO".然后在Appdelegate中只需在didfinishlaunchingwithoptions方法中添加此行

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIApplication.shared.statusBarStyle = .lightContent
        return true
    }
Run Code Online (Sandbox Code Playgroud)

现在你应该在rootviewcontroller中覆盖这个属性,这已经在iOS9中被弃用了

这样做已经在iOS 9中被弃用了,应该在rootviewcontroller上执行此操作

override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
 }
Run Code Online (Sandbox Code Playgroud)


Jos*_*arl 17

iOS 7允许各个视图控制器确定状态栏的外观,如Apple开发人员文档所述:

iOS 7使视图控制器能够在应用程序运行时调整状态栏的样式.动态更改状态栏样式的一种好方法是preferredStatusBarStyle在动画块中实现和更新状态栏外观和调用setNeedsStatusBarAppearanceUpdate.

全局设置状态栏外观分为两步.

首先,您需要告诉iOS您不希望在逐个视图的基础上设置状态栏外观.

然后你需要负责并实际设置新的全局状态栏样式.

要禁用逐个视图状态栏控件,您需要设置View controller-based status bar appearance属性Info.plist.

打开Project Navigator并为iOS应用程序选择项目,然后选择Info选项卡.

将鼠标悬停在一行上,然后点击显示的加号,即可为您添加新属性.plist.

View controller-based status bar appearance在Key字段中输入,然后确保Type字段设置为Boolean.最后,输入NOValue字段.

要为状态栏设置全局样式,请在"信息"选项卡下添加另一个属性,其键为" Status bar style类型" String和"值" Opaque black style.

这是一篇博文,其中包含更多细节和一些示例代码:

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/


par*_*gic 12

为Xcode GM Seed更新的答案:

  1. Info.plistView controller-based status bar appearance作为NO

  2. 在项目中,设置:

    在此输入图像描述

  3. 在ViewDidLoad中:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];


Moh*_*mar 12

不需要做额外的事情,只需在viewController中编写此代码并获取状态栏颜色为白色

- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
Run Code Online (Sandbox Code Playgroud)


Faw*_*kes 11

我认为所有的答案并没有真正指出问题,因为它们都在特定的情况下工作.但如果您需要涵盖所有案例,请遵循以下几点:

根据您需要的状态栏灯样式,您应始终牢记以下3点:

1)如果您需要启动屏幕或其他地方的状态栏,您无法控制它(不在视图控制器中,而是一些系统控制的元素/时刻,如启动屏幕) 您转到项目设置 项目设置

2)如果您在导航控制器中有控制器 您可以在界面构建器中更改它,如下所示:

a)选择导航控制器的导航栏 选择导航控制器的导航栏

b)然后将导航栏的样式设置为"黑色",因为这意味着您的状态栏下方会出现"黑色" - >深色背景,因此会将状态栏设置为白色

在此输入图像描述

或者在代码中执行如下操作

navigationController?.navigationBar.barStyle = UIBarStyle.Black
Run Code Online (Sandbox Code Playgroud)

3)如果您只有控制器需要拥有自己的状态栏样式,并且它没有作为UINavigationController嵌入到某些容器结构中

在控制器的代码中设置状态栏样式:

在代码中设置状态栏样式


Cag*_*aya 10

只是打电话

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
Run Code Online (Sandbox Code Playgroud)

在里面

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
Run Code Online (Sandbox Code Playgroud)

我的AppDelegate作品方法在iOS7中对我很有用.


Aar*_*ler 9

这在iOS 7 UI Transition Guide中有记录,您需要Apple开发人员ID才能直接访问.相关摘录:

因为状态栏是透明的,所以它后面的视图显示出来.[...]使用UIStatusBarStyle常量指定状态栏内容应该是暗还是亮:

UIStatusBarStyleDefault显示黑暗内容.[...]

UIStatusBarStyleLightContent显示轻量级内容.当暗内容位于状态栏后面时使用.

也可能感兴趣:

在iOS 7中,您可以从单个vew控制器控制状态栏的样式,并在应用程序运行时进行更改.要选择加入此行为,请将UIViewControllerBasedStatusBarAppearance密钥添加到应用程序的Info.plist文件中并为其指定值YES.

我绝对建议您浏览一下该文档,您也可以使用Apple开发者ID访问该文档.

  • 我已经尝试过[application setStatusBarStyle:UIStatusBarStyleLightContent]; 但实际上没什么变化,文字颜色仍然是黑色 (3认同)

Kru*_*nal 9

以下是有关状态栏更改的Apple指南/说明.状态栏中仅允许黑暗和浅色(同时为黑色).

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

如果要设置状态栏样式,则应用程序级别将设置UIViewControllerBasedStatusBarAppearanceNO".plist"文件.

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

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

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

-

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
Run Code Online (Sandbox Code Playgroud)

根据状态栏样式设置级别设置.plist的值. 在此输入图像描述


这是在应用程序启动期间或视图控制器的viewDidLoad期间更改/设置状态栏的背景颜色的一些hacky技巧.

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
    }

}
Run Code Online (Sandbox Code Playgroud)



结果如下:

在此输入图像描述


sup*_*rm0 9

对于 Swift 5,我添加了以下几行:

override func viewDidAppear(_ animated: Bool) {
    navigationController?.navigationBar.barStyle = .black
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
Run Code Online (Sandbox Code Playgroud)


Fel*_*oso 8

我做了一些不同的事情,它对我有用.

没有代码更改,我确实配置了我的.plist文件:

  • 查看基于控制器的状态栏外观> NO
  • 状态栏样式> UIStatusBarStyleLightContent(简单字符串)

我希望它有所帮助.

编辑

对于每个视图控制器,我将故事板中的"状态栏"的模拟度量属性从"推断"更改为"轻量级内容"


eir*_*rik 8

如果您仍想View controller-based status bar appearance在info.plist中设置为YES,这意味着您可以更改每个视图控制器的状态栏,请在ViewDidLoad的状态栏中使用以下白色文本:

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
Run Code Online (Sandbox Code Playgroud)


fra*_*ool 8

如果你想要与Swift相同的结果,你可以在你的AppDelegate.swift文件中使用这个代码:

UINavigationBar.appearance().barStyle = .BlackTranslucent
Run Code Online (Sandbox Code Playgroud)

状态栏的文本将为白色:-)!


And*_*rna 8

iOS 13 解决方案

UINavigationController是(谁知道)的子类UIViewController

因此,当呈现嵌入在导航控制器中的视图控制器时,您并不是真正呈现嵌入的视图控制器;而是呈现嵌入的视图控制器。您正在展示导航控制器!UINavigationController,作为 的子类UIViewController,继承preferredStatusBarStylechildForStatusBarStyle,您可以根据需要进行设置。

以下任何方法都应该有效:

  1. 选择完全退出深色模式
    • 在您的 中info.plist,添加以下属性:
      • 键 - UIUserInterfaceStyle(又名“用户界面风格”)
      • 价值 - 轻
  2. 覆盖preferredStatusBarStyle范围内UINavigationController

    • preferredStatusBarStyle( doc ) - 视图控制器的首选状态栏样式
    • 子类或扩展UINavigationController

      class MyNavigationController: UINavigationController {
          override var preferredStatusBarStyle: UIStatusBarStyle {
              .lightContent
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)

      或者

      extension UINavigationController {
          open override var preferredStatusBarStyle: UIStatusBarStyle {
              .lightContent
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)
  3. 覆盖childForStatusBarStyle范围内UINavigationController

    • childForStatusBarStyle文档 ) - 当系统需要视图控制器来确定状态栏样式时调用
    • 根据苹果的文档,

      “如果您的容器视图控制器从其子视图控制器之一派生其状态栏样式,[覆盖此属性]并返回该子视图控制器。如果您返回 nil 或不覆盖此方法,则使用 self 的状态栏样式。如果此方法的返回值发生变化,请调用 setNeedsStatusBarAppearanceUpdate() 方法。”

    • 换句话说,如果这里不实现解决方案3,系统将回退到上面的解决方案2。
    • 子类或扩展UINavigationController

      class MyNavigationController: UINavigationController {
          override var childForStatusBarStyle: UIViewController? {
              topViewController
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)

      或者

      extension UINavigationController {    
          open override var childForStatusBarStyle: UIViewController? {
              topViewController
          }
      }
      
      Run Code Online (Sandbox Code Playgroud)
    • 您可以返回上面您想要的任何视图控制器。我推荐以下之一:

      • topViewController(of UINavigationController) ( doc ) - 导航堆栈顶部的视图控制器
      • visibleViewController(of UINavigationController) ( doc ) - 与导航界面中当前可见视图关联的视图控制器(提示:这可以包括“以模态方式呈现在导航控制器本身之上的视图控制器”)

注意:如果您决定子类化UINavigationController,请记住通过 IB 中的身份检查器将该类应用到您的导航控制器。

PS 这适用于 iOS 13


Ram*_*has 7

在Plist中,添加以下内容:

  • 状态栏样式: UIStatusBarStyleLightContent
  • 查看基于控制器的状态栏外观: NO


小智 7

在info.plist中设置字段值NO 查看基于控制器的状态栏外观并在目标>常规设置中设置状态栏样式指示灯.

  • 冠军得主鸡肉晚餐 (2认同)

小智 7

让我给你一个完整的答案.更改状态栏文本颜色非常容易,但在iOS 7中专门针对新手来说有点混乱.

如果您试图通过选择视图控制器并转到右侧的模拟指标,在故事板中将颜色从黑色更改为白色,则它将无法工作,我不知道原因.它应该通过这样改变,但任何方式.

其次,您不会在plist中找到UIViewControllerBasedStatusBarAppearance属性,但默认情况下它不在那里.您必须通过单击+按钮自己添加它,然后将其设置为NO.

ios 7状态栏文本颜色

最后,您必须转到AppDelegate.m文件并在didFinishLaunchingWithOptions方法中添加以下内容,添加以下行:

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)

这会将所有视图控制器的颜色更改为白色.希望这可以帮助!


小智 6

完成这项工作的关键是只有全屏视图控制器才能决定状态栏的样式.

如果您正在使用导航控制器并希望在每个视图控制器的基础上控制状态栏,您将需要子类UINavigationController并实现preferredStatusBarStyle,以便它返回topViewController的首选项.

确保将故事板场景中的类引用从UINavigationController更改为子类(例如下面示例中的MyNavigationController).

(以下适用于我.如果您的应用程序是基于TabBar的,您将希望通过继承UITabBarController来做类似的事情,但我还没有尝试过).

@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return self.topViewController.preferredStatusBarStyle;
}

@end
Run Code Online (Sandbox Code Playgroud)


bud*_*ino 6

总结一下,编辑项目Info.plist并添加:

View controller-based status bar appearance : NO

Status bar style : Opaque black style

或者如果你有原始键/值plist

UIViewControllerBasedStatusBarAppearance : NO

UIStatusBarStyle : Opaque black style


Eri*_*187 6

Xcode 似乎不断改变这一点,所以这是最新的。

截至 2021 年 - Swift 5、Xcode 12

要将状态栏更改为白色:

  1. 打开您的Info.plist
  2. 添加键UIViewControllerBasedStatusBarAppearance并将值设置为No(false)。
  3. 添加键UIStatusBarStyle并将值设置为UIStatusBarStyleLightContent(即光内容)。


Dim*_*lov 5

您可以从 info.plist 执行此操作:

1)“查看基于控制器的状态栏外观”设置为“NO”

2)“状态栏样式”设置为“UIStatusBarStyleLightContent”

完毕


Mar*_*tos 5

对于Xcode 5.1:

在.plist中将" 查看基于控制器的状态栏外观 "添加到NO.

在AppDelegate中,添加:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)

就这样!


Zai*_*han 5

斯威夫特 3 - Xcode 8。

如果您希望状态栏最初隐藏在启动屏幕上,请尝试此操作,

步骤 1:将以下内容添加到info.plist.

  • View controller-based status bar appearance 价值 NO
  • Status bar is initially hidden 价值 YES

第 2 步:didFinishLaunchingWithOptions方法中编写它。

UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

594785 次

最近记录:

6 年 前