如何更改状态栏颜色使用ios与互联网可达性快速?

我想改变我的设备状态栏的颜色,如果互联网连接比状态栏的颜色应该变成黑色,如果互联网没有连接的颜色或状态栏应该变成红色,这表明它的互联网工作与否使用SWIFT处理应用程序…帮助我

Info.plist您需要将“基于视图控制器的状态栏外观”设置为布尔值。

如果将其设置为YES则应该在每个视图控制器中重写preferredStatusBarStyle函数。

如果您将其设置为NO则可以使用以下方法在AppDelegate设置样式:

 UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true) 
 override func viewWillAppear(animated: Bool) { self.navigationController?.navigationBarHidden = true //Status bar style and visibility UIApplication.sharedApplication().statusBarHidden = false UIApplication.sharedApplication().statusBarStyle = .LightContent //Change status bar color let statusBar: UIView = UIApplication.sharedApplication().valueForKey("statusBar") as! UIView if statusBar.respondsToSelector("setBackgroundColor:") { statusBar.backgroundColor = UIColor.redColor() } } 

对于Swift 2.3

试试这些方法

 // Get network status class func hasConnectivity() -> Bool { let reachability: Reachability = Reachability.reachabilityForInternetConnection() let networkStatus: Int = reachability.currentReachabilityStatus().value return networkStatus != 0 } // change status bar color var navigationBarAppearace = UINavigationBar.appearance() navigationBarAppearace.tintColor = UIColor.blueColor() navigationBarAppearace.barTintColor = UIColor.blueColor() 

tintColor属性更改导航栏的背景颜色

barTintColor属性影响到的颜色

但是如果你想在运行时改变状态栏的颜色,我认为更好的方法是在你的状态栏后添加一个视图

正如@rckoenes在iOS 7中评论的那样,状态栏是通过你的应用程序绘制的。 因此,您可以在状态栏区域后面(距离状态栏顶部20像素)放置一个视图,并可以根据Internet连接状态更改来控制其背景颜色,没有其他选项可以更改状态栏颜色。

在Swift和iOS9中testing

如果你使用导航控制器 ,把它放在你的viewcontroller类中:

 override func viewDidLoad(){ ... self.navigationController?.navigationBar.barStyle = .Black } 

否则,重写UIViewController中的preferredStatusBarStyle()

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

你可以在这里find更多的信息

对于Swift 3

这应该适用于Xcode 8和Swift 3

 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 

//在你的AppDelegate.swift中didFinishLaunchingWithOptions:UINavigationBar.appearance()。barTintColor = UIColor.greenColor()

 //Optionally, if you need a specific color, how you do it with RGB: UINavigationBar.appearance().barTintColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) or 

在Info.plist中,您需要将“基于视图控制器的状态栏外观”设置为布尔值。

  UIApplication.sharedApplication().statusBarStyle = .LightContent