ich möchte die Farbe der Statusleiste meines Geräts ändern, wenn das Internet verbunden ist, und die Farbe der Statusleiste schwarz sein sollte. Wenn das Internet nicht angeschlossen ist, sollte die Farbe oder die Statusleiste rot sein, sodass angezeigt wird, ob das Internet während des Betriebs funktioniert oder nicht Arbeiten mit der Anwendung mit Swift ... Helfen Sie mir
In Ihrem Info.plist
müssen Sie "Darstellung der Controller-basierten Statusleiste anzeigen" auf einen booleschen Wert setzen.
Wenn Sie YES
setzen, sollten Sie die preferredStatusBarStyle
-Funktion in jedem View-Controller überschreiben.
Wenn Sie NO
einstellen, können Sie den Stil in AppDelegate
festlegen, indem Sie Folgendes verwenden:
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()
}
}
In Swift & iOS9 getestet
Wenn Sie Navigations-Controller verwenden, fügen Sie dies in Ihre Viewcontroller-Klasse ein:
override func viewDidLoad(){
...
self.navigationController?.navigationBar.barStyle = .Black
}
Andernfalls überschreiben Sie die preferredStatusBarStyle()
in Ihrem UIViewController:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
Weitere Informationen finden Sie hier
Für Swift 2.3
Versuchen Sie es mit diesen Methoden
// 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()
Das Attribut tintColor
ändert die Hintergrundfarbe der Navigationsleiste
Das barTintColor
-Attribut wirkt sich auf die Farbe des aus
Wenn Sie jedoch die Farbe der Statusleiste an der Laufzeit ändern möchten, denke ich, dass besser eine Ansicht hinter Ihrer Statusleiste hinzufügt.
Für Swift 3
Dies sollte für Xcode 8 und Swift 3 funktionieren
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
// Innerhalb Ihrer AppDelegate.Swift in 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
In Ihrer Info.plist müssen Sie "Darstellung der Controller-basierten Statusleiste anzeigen" auf einen booleschen Wert setzen.
UIApplication.sharedApplication().statusBarStyle = .LightContent
Da @rckoenes ab iOS 7 kommentiert wurde, wird die Statusleiste über Ihre App gezeichnet. Sie können also eine Ansicht hinter den Statusleistenbereich setzen (20 Pixel von der obersten Höhe der Statusleiste) und deren Hintergrundfarbe entsprechend den Statusänderungen der Internetverbindung steuern. Es gibt keine andere Möglichkeit, die Farbe der Statusleiste zu ändern.
Weißer Text in schwarzer Statusleiste: Wechseln Sie Anzeige der Controller-Statusleiste toNOin Info.plist Fügen Sie in AppDelegate.Swift let statusBar: UIView = UIApplication.shared.value(forKey: "statusBar") as! UIView
statusBar.backgroundColor = UIColor.black
in didFinishLaunchingWithOptions hinzu