当前位置:  开发笔记 > IOS > 正文

在XCode 8.2/Swift 3.0中更改状态栏样式(否"查看基于控制器的状态栏外观")

如何解决《在XCode8.2/Swift3.0中更改状态栏样式(否"查看基于控制器的状态栏外观")》经验,为你挑选了3个好方法。

我试图修改状态栏的外观(使文本白色/将样式设置为"亮").我设法通过将其添加到我的AppDelegate.swift文件来设置背景颜色:

let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statWindow.subviews[0] as UIView
statusBar.backgroundColor = UIColor(red: 0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0)

但是,当我去更改状态栏文本的样式时,即使在常规>部署信息>状态栏样式(将其更改为"Light")下更改此项也不起作用.

我还尝试通过Info.plist修改状态栏,但没有"查看基于控制器的状态栏外观"的字段(请参阅第二张图像).此外,状态栏样式选项下没有"浅色"样式选项(见下图):

状态栏样式选项: 截图

没有视图控制器状态栏字段: 截图



1> 小智..:

您错过的步骤是Info.plist.

打开应用程序的info.plist文件,将UIViewControllerBasedStatusBarAppearance设置为NO(如下所示).

截图

注意:如果尚未出现此密钥,则可以添加此密钥:

1)将鼠标悬停在现有条目上以显示添加/删除图标:

在此输入图像描述

2)单击加号图标以添加新的键/值对:

在此输入图像描述

3)粘贴UIViewControllerBasedStatusBarAppearance到关键字段并将其值设置为NO.注意,View controller-based status...当取消选择时,密钥将更改为,但它是相同的:

在此输入图像描述 在此输入图像描述



2> Nicolas Buqu..:

在应用程序的每个UIViewController中,您应该覆盖preferredStatusBarStyle属性:

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

并最终致电:

.setNeedsStatusBarAppearanceUpdate()

如果这个statusBar样式遍及你的所有应用程序,那么你应该创建一个BaseViewController实现它的类,并使所有视图控制器继承自BaseViewController.



3> Datt Patel..:

迅捷3

如果在Info.plist中查看基于控制器的状态栏外观= YES

然后对所有NavigationController使用此扩展

    extension UINavigationController
    {
        override open var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
         }
     }

如果没有UINavigationController,只有UIViewController,那么使用下面的代码:

    extension UIViewController
    {
        override open var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
         }
     }

目标c

创建类别类

对于UIViewController

在UIViewController + StatusBarStyle.h中

 @interface UIViewController (StatusBarStyle)
 @end

在UIViewController + StatusBarStyle.m中

 #import "UIViewController+StatusBarStyle.h"

 @implementation UIViewController (StatusBarStyle)

 -(UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
 }

 @end 

对于UINavigationController

在UINavigationController + StatusBarStyle.h中

 @interface UINavigationController (StatusBarStyle)
 @end

在UINavigationController + StatusBarStyle.m中

 #import "UINavigationController+StatusBarStyle.h"

 @implementation UINavigationController (StatusBarStyle)

 -(UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
 }

 @end  

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有