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