2017-02-22 7 views
3

Ich weiß barTintColor in einigen Viewcontroller festlegen möchten ich UINavigationBar.appearance().barTintColor für alle Standardfarbe festgelegt haben, aber wenn ich Aussehen verwenden whenContainedInInstancesOf Es ist nicht meine ViewcontrollerSet UINavigationBar Aussehen whenContainedInInstancesOf meinem Viewcontroller nicht funktioniert

UINavigationBar.appearance(whenContainedInInstancesOf: [MyViewController.self]).barTintColor = .white 

ändern

Irgendeine Idee ?. Ich versuchte das in meinem Viewcontroller

, aber ich muss Farbe zurück zu Standard setzen, wenn Bildschirm verschwindet. Ich will das nicht machen. Wie kann ich?

+0

Mögliche Duplikat [appearanceWhenContainedIn in Swift] (http://stackoverflow.com/questions/24136874/appearancewhencontainedin-in-swift) – zombie

+0

@zombie Ich habe versucht, dieses 'UINavigationBar.appearance (whenContainedInInstancesOf : [MyViewController.self]). BarTintColor = .white' aber es funktioniert immer noch nicht! – Oniikal3

+0

Aber es sagt, dass es nur für iOS 10 ist, also welche Version testen Sie auf – zombie

Antwort

3

UINavigationBar in einem UINavigationController enthalten nicht UIViewController

mit, daß die Sie eine benutzerdefinierte UINavigationController

eine leere Klasse, den Job erstellen müssen

class NavigationController: UINavigationController {} 

dann können wir es tun verwenden

Beispiel kann gefunden werden here

+0

Ich denke, das wird auch andere Bildschirm ändern. welche Bildschirme sind neben dem ersten Bildschirm (Bildschirm, der weiße Navigationsleiste benötigt). – Oniikal3

+0

Wenn Sie meinen, dass dies die Farbe für 'UINavigationController' ändert, dann nein. Es wird nur für "NavigationController" wirksam. – zombie

+0

@ Oniikal3 übrigens hast du gedacht oder versucht? – zombie

2

@zombie hat die richtige Antwort. Ich bin gerade mit UISearchBar auf dieses Problem gestoßen. Hier ist die Swift 3-Version der Antwort. Unter Verwendung von .red als Beispiel UIColor für dieses Beispiel.

let textField = UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]) 
textField.tintColor = .red 

let searchBar = UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]) 
searchBar.setTitleTextAttributes([NSForegroundColorAttributeName: .red], for: .normal) 
searchBar.setTitleTextAttributes([NSForegroundColorAttributeName: .red], for: .disabled) 

Sample Image

Verwandte Themen