Как изменить цвет строки состояния с помощью 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