Как изменить цвет строки состояния с помощью ios с быстрым доступом к Интернету?

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

Ответ 1

В вашем Info.plist вам необходимо установить "Просмотреть строку состояния на основе контроллера" на логическое значение.

Если вы установите его на YES, вы должны переопределить функцию preferredStatusBarStyle в каждом контроллере представления.

Если вы установите его на NO, вы можете установить стиль в AppDelegate, используя:

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

Ответ 2

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

}

Ответ 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

Протестировано в Swift и iOS9

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

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

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

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

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

Ответ 5

Как отмечает @rckoenes, как и в iOS 7, строка состояния - это рисовать над вашим приложением. Таким образом, вы можете поместить представление за панель состояния (20px из верхней - высота строки состояния) и можете управлять цветом фона в соответствии с изменениями статуса подключения к Интернету, нет другой возможности изменить цвет строки состояния.

Ответ 6

//В вашем приложении 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

Ответ 7

Для Swift 3

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

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}