如何在互联网可达性上使用带有swift的ios更改状态栏颜色?

时间:2014-11-25 10:28:03

标签: ios swift statusbar

我想更改设备状态栏的颜色如果互联网已连接,状态栏颜色应变为黑色,如果未连接互联网,颜色或状态栏应变为红色,以便表明互联网正常工作或者在使用SWIFT使用应用程序期间没有...帮帮我

9 个答案:

答案 0 :(得分:36)

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

如果您将其设置为YES,那么您应该在每个视图控制器中覆盖preferredStatusBarStyle功能。

如果您将其设置为NO,则可以使用以下内容在AppDelegate中设置样式:

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)

答案 1 :(得分:28)

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()
    }

}

答案 2 :(得分:5)

测试Swift& iOS9

如果您使用导航控制器,请将其放在viewcontroller类中:

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

否则,覆盖UIViewController中的preferredStatusBarStyle()

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

您可以找到更多信息here

答案 3 :(得分:3)

适用于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属性会影响

的颜色

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

答案 4 :(得分:2)

正如@rckoenes在iOS 7中评论的那样,状态栏是在您的应用上绘制的。因此,您可以在状态栏区域后面放置一个视图(从顶部 - 状态栏高度20px)并根据互联网连接状态更改控制其背景颜色,没有其他选项可以更改状态栏颜色。

答案 5 :(得分:2)

//在didFinishLaunchingWithOptions中的AppDelegate.swift中:     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

答案 6 :(得分:2)

适用于Swift 3

这适用于Xcode 8和Swift 3

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

答案 7 :(得分:0)

要在黑色状态栏中显示白色文本:  在 Info.plist 中将基于视图控制器的状态栏外观切换为 在AppDelegate.swift中添加 let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView statusBar.backgroundColor = UIColor.black 在didFinishLaunchingWithOptions

答案 8 :(得分:-1)

UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightContent, animated: true)