2016-08-16 3 views
0

i gesucht und gesucht und ich fand bisher nur Antworten für:Swift - Ist es möglich, eine bestimmte Farbe für die Statusleiste für ALLE View-Controller festzulegen?

  1. eine bestimmte Farbe für bestimmte View-Controller Wahl
  2. Statusleiste Farbwechsel machen nach seinem aktuellen View-Controller

i müssen Sie wissen: Ist es möglich, eine universelle Farbe für die Statusleiste zu wählen, die überall in der Anwendung erscheint?

Vielen Dank für die Hilfe

+2

Ja, es ist möglich –

+1

siehe http://stackoverflow.com/questions/17678881/how-to-change-status-bar-text-color-in-ios-7 –

+1

Ja, Sie können es einfach auf Ihrem root setzen Regler. – Sulthan

Antwort

0
  1. Set "View Controller-basierte Statusleiste Aussehen"
  2. (UIViewControllerBasedStatusBarAppearance) auf YES in Ihrem Info.plist. (YES ist die Standardeinstellung, Sie können also auch diesen Wert aus Ihrer Liste entfernen.)
  3. Rufen Sie in Ihrer viewDidLoad Methode [self setNeedsStatusBarAppearanceUpdate].
  4. preferredStatusBarStyle implementieren, die Statusleiste Stil zurückkehren, die Sie für diesen View-Controller mögen:

    - (UIStatusBarStyle) preferredStatusBarStyle { 
        return UIStatusBarStyleLightContent; 
    } 
    
+1

ich bin wirklich nicht sicher, aber ist das nicht die Methode, um jeden ViewController seine eigene Statusleiste Farbe zu zeigen? Ich schrieb (Nummer 1), dass ich das schon gefunden habe. Ich möchte es nur EINMAL definieren können. trotzdem trotzdem danke – MarkosDarkin

-1

Sie können auch in AppDelegate hinzufügen:

- (BOOL)application:(UIApplication *)application 
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
… 
[application setStatusBarStyle:UIStatusBarStyleLightContent]; 
… 
} 

Oder anders als Ich habe im ersten Kommentar diskutiert:

  1. Setzen Sie UIViewControllerBasedStatusBarAppearance in der Datei .plist auf YES.
  2. Im viewDidLoad tun ein [self setNeedsStatusBarAppearanceUpdate];
  3. die folgende Methode hinzu:

    - (UIStatusBarStyle)preferredStatusBarStyle 
    { 
        return UIStatusBarStyleLightContent; 
    } 
    

Hinweis: Dies funktioniert nicht, wenn Sie eine Navigationsleiste haben.

-1

Bearbeiten Also, dank HAS, habe ich verstanden, das ist keine gute Antwort. Es funktioniert, aber es nutzt eine private API (Zugriff auf StatusBarWindow und StatusBar mit KVC), so dass es wahrscheinlich nicht mit Apple fliegen wird. Dies ist NICHT die Antwort :)

Nun, nach einer langen Recherche habe ich den Weg gefunden, es zu tun und es ist ganz einfach. Noch einmal, ich versuche, die Statusleiste eine benutzerdefinierte Farbe wie Schwarz, Weiß oder Orange zu geben. Die Art und Weise dies zu tun ist durch:

  1. gehen (falls nicht bereits vorhanden) „View Controller-basierte Statusleiste Aussehen“ und auf info.plist und fügen Sie es zu: NO
  2. Go Deployment Info des Projektes und stellen Sie 'Status Bar Style' auf 'Light' oder 'Default' (abhängig von der gewählten Farbe. Für Schwarz sollten Sie 'Light' wählen)
  3. gehen Sie zu AppDelegate.die folgende Funktion schnell und hinzufügen:

    func setStatusBarBackgroundColor(color: UIColor){ 
        guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else { 
         return 
        } 
    
        statusBar.backgroundColor = color 
    } 
    
  4. in AppDelegate.swift, auf diese Funktion gehen:

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    

    und innerhalb dieser die Funktion rufen wir 3 gemacht, was bedeutet: setStatusBarBackgroundColor (TheColorYouWant)

thats it :) es funktioniert auf allen Ansichten und kein weiterer Code muss wri sein tten. Bitte zögern Sie nicht mich zu korrigieren, wenn ich irgendwelche Fehler gemacht habe oder wenn es eine Möglichkeit gibt, den Code in irgendeiner Weise zu verbessern.

Vielen Dank für diejenigen, die Zeit

+1

Dies verwendet private API und wird wahrscheinlich nicht zulassen, dass Sie Ihre App an den AppStore senden. – HAS

+0

Welche private API? – MarkosDarkin

+1

'statusBarWindow' und' statusBar' sind beide privat. Andernfalls würden sie hier https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/ aufgelistet und Sie müssten KVC nicht verwenden, um diese Eigenschaften zu erhalten. – HAS

0

Auf Art und Weise zu helfen, nahmen dies zu erreichen, ist eine UIView mit der richtigen Position und Dimension zu erstellen, es dann direkt an den UIWindow hinzufügen:

class AppDelegate: UIResponder, UIApplicationDelegate { 
var window: UIWindow? 
var statusBarColorView: UIView? 

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 
window?.makeKeyAndVisible() 

    let v = UIView(frame: CGRect(x: 0, y: 0, width: window?.frame.size.width ?? 1024, height: 20)) 
    v.backgroundColor = UIColor.white 
    v.translatesAutoresizingMaskIntoConstraints = false 
    window?.addSubview(v) 
    window?.addConstraints(NSLayoutConstraint.constraints(
     withVisualFormat: "V:|-0-[v(==20)]", 
     options: [], 
     metrics: nil, 
     views: ["v": v])) 
    window?.addConstraints(NSLayoutConstraint.constraints(
     withVisualFormat: "H:|-0-[v]-0-|", 
     options: [], 
     metrics: nil, 
     views: ["v": v])) 

    return true 
} 

Das Problem bei diesem Ansatz besteht darin, dass Sie ihn entsprechend der Geräteausrichtung/des aktuell angezeigten View-Controllers ein- und ausblenden müssen.

ändern Farbe wird wie folgt aussehen:

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 

    if let appDelegate = UIApplication.shared.delegate as? AppDelegate { 
     appDelegate.statusBarColorView?.backgroundColor = UIColor.blue 
    } 
} 

Sie werden sicherlich UIStatusBarStyle entsprechend Ihrer Farbe anpassen möchten, können Sie dies erreichen, indem YES für den Schlüssel UIViewControllerBasedStatusBarAppearance in Ihrem Info.plist Auswahl

Verwandte Themen