Как изменить цвет строки состояния с помощью ios с swift в интернете?

Я хочу изменить цвет строки состояния моего устройства, если интернет подключен, чем цвет строки состояния должен стать черным, и если интернет не подключен, цвет или строка состояния должны стать красными, так что он указывает, работает ли интернет или нет во время работы с приложением с помощью SWIFT...помоги мне!--1-->

8 ответов


в своем 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 & iOS9

Если вы используете Контроллеры Навигации, поместите это в свой класс viewcontroller:

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

в противном случае, переопределить preferredStatusBarStyle() в вашем UIViewController:

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

вы можете найти более подробную информацию здесь


Для 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, строка состояния рисуется над вашим приложением. Таким образом, вы можете поместить вид за область строки состояния (20px от верхней высоты строки состояния) и может контролировать его цвет фона в соответствии с изменениями состояния подключения к интернету, нет никакой другой возможности изменить цвет строки состояния.


Для Swift 3

Это должно работать для Xcode 8 и Swift 3

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

/ / в вашем AppDelegate.Свифт в didFinishLaunchingWithOptions в: UINavigationBar.внешний вид.)(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 

в вашей информации.plist вам нужно установить" внешний вид строки состояния на основе контроллера вида " в логическое значение.

 UIApplication.sharedApplication().statusBarStyle = .LightContent

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