Ich weiß, wie man das UINavigationBar
Hintergrundbild dadurch ändert
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
und ich weiß, wie man die Leiste in jedem auf verschiedene Farben setzt Views
..... Jetzt möchte ich die Hintergrundfarbe ändern, ohne ein Bild in eine Volltonfarbe aus dem zu verwenden app delegate
. Ich möchte es nicht jedes Mal in jeder Ansicht festlegen und ich möchte keine schreiben CGRect
.
Ich habe es versucht, [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
aber es funktioniert nicht und ich kann nirgendwo einen Code finden, der im App-Delegaten funktioniert.
Könnte mich bitte jemand in die richtige Richtung weisen?
quelle
tintColor
dem Gefälle bleibt. Wenn Sie diesen Verlauf nicht haben möchten, müssen Sie Ihre UINavigationBar ODER eine Unterklasse erstellen, um ein UIImage für das Erscheinungsbild zu erstellen.navigationBar.barTintColor = myColor;
translucent
Die Eigenschaft kann mit UIAppearance in iOS 6 und iOS 7 einfach nicht festgelegt werden. Daher[[UINavigationBar appearance] setTranslucent:NO]
stürzt die App mit einemNSInvalidArgumentException
Fehler ab. Verwenden[self.navigationController.navigationBar setTranslucent:NO]
oder deaktivieren Sie die Transparenz mithilfe von IB.UINavigationBar.appearance().barTintColor = myColor
UINavigationBar.appearance().isTranslucent = false
Um die Hintergrundfarbe und nicht den Farbton zu ändern, funktioniert der folgende Code:
quelle
UIViewControllers
, während diese bei jedem Aufruf Effekte anzeigt.Dafür in iOS 7:
quelle
Schnelle Syntax:
Ich habe das gerade in das AppDelegate didFinishLaunchingWithOptions eingefügt und es bleibt in der gesamten App erhalten
quelle
Swift :
quelle
Sie können dies einfach mit Xcode 6.3.1 tun. Wählen Sie Ihre Navigationsleiste in der Dokumentübersicht aus. Wählen Sie den Attributinspektor aus. Deaktivieren Sie Translucent. Stellen Sie die Balkentönung auf die gewünschte Farbe ein. Getan!
quelle
Wie die anderen Antworten erwähnen, können Sie verwenden
setTintColor:
, aber Sie möchten eine Volltonfarbe und dies ist nicht möglich, um die Farbtonfarbe AFAIK einzustellen.Die Lösung besteht darin, programmgesteuert ein Bild zu erstellen und dieses Bild als Hintergrundbild für alle Navigationsleisten über festzulegen
UIAppearance
. Über die Größe des Bildes bin ich mir nicht sicher, ob ein 1x1-Pixel-Bild funktionieren würde oder ob Sie die genaue Größe der Navigationsleiste benötigen. Überprüfen Sie die zweite Antwort auf diese Frage, um zu sehen, wie das Bild erstellt wird.Als Ratschlag möchte ich den App-Delegierten nicht mit solchen Dingen "überladen". Ich neige dazu, eine Klasse
AppearanceConfiguration
mit nur einer öffentlichen Methode zu erstellen ,configureAppearance
in der ich alle gewünschten UIAppearance-Inhalte festlege und diese Methode dann vom App-Delegaten aufrufe.quelle
Sie können die Hintergrundfarbe von UINavigation mithilfe dieses Codes in einem beliebigen Ansichts-Controller festlegen
quelle
In Swift 4.2 und Xcode 10.1
Sie können die Farbe Ihrer Navigationsleiste von Ihrem AppDelegate direkt in Ihr gesamtes Projekt ändern.
In
didFinishLaunchingWithOptions launchOptions:
Schreib unten an CodezeilenHier
tintColor dient zum Einstellen von Hintergrundbildern wie Zurück-Schaltflächen- und Menüzeilenbildern usw. (Siehe unten links und rechts im Menübild)
barTintColor ist für die Hintergrundfarbe der Navigationsleiste
Wenn Sie eine bestimmte Farbe für die Navigationsleiste des View Controllers festlegen möchten, schreiben Sie den folgenden Code ein
viewDidLoad()
quelle
Der Farbcode ist hier das Problem. Verwenden Sie statt 195/255 0,7647 oder 195.f / 255.f. Das Problem besteht darin, dass der Float nicht ordnungsgemäß konvertiert wird. Versuchen Sie es mit dem exakten Float-Wert.
quelle