Es scheint, dass die Titelfarbe der iOS-Navigationsleiste standardmäßig weiß ist. Gibt es eine Möglichkeit, die Farbe zu ändern?
Mir ist der navigationItem.titleView
Ansatz mit einem Bild bekannt. Da meine Designfähigkeiten begrenzt sind und ich nicht den Standardglanz erhalten habe, ziehe ich es vor, die Textfarbe zu ändern.
Jeder Einblick wäre sehr dankbar.
ios
uinavigationbar
navigationitem
Callum
quelle
quelle
Antworten:
Moderner Ansatz
Die moderne Methode für den gesamten Navigationscontroller… tun Sie dies einmal, wenn die Stammansicht Ihres Navigationscontrollers geladen ist.
Dies scheint jedoch in nachfolgenden Ansichten keine Auswirkungen zu haben.
Klassischer Ansatz
Der alte Weg, pro Ansichts-Controller (diese Konstanten gelten für iOS 6, aber wenn Sie dies pro Ansichts-Controller unter iOS 7 tun möchten, möchten Sie denselben Ansatz, jedoch mit unterschiedlichen Konstanten):
Sie müssen ein
UILabel
als dastitleView
der verwendennavigationItem
.Das Etikett sollte:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
für ältere SDKs).Stellen Sie die Etikettentextfarbe auf die gewünschte benutzerdefinierte Farbe ein. Sie möchten eine Farbe, bei der der Text nicht in Schatten übergeht, was schwer zu lesen wäre.
Ich habe das durch Ausprobieren herausgefunden, aber die Werte, die ich mir ausgedacht habe, sind letztendlich zu einfach, als dass sie nicht das wären, was Apple ausgewählt hat. :) :)
Wenn Sie dies überprüfen wollen, fällt diesen Code in
initWithNibName:bundle:
inPageThreeViewController.m
dem Apple NavBar Probe . Dadurch wird der Text durch ein gelbes Etikett ersetzt. Dies sollte mit Ausnahme der Farbe nicht von dem Original zu unterscheiden sein, das von Apples Code erstellt wurde.Bearbeiten: Lesen Sie auch die Antwort von Erik B unten. Mein Code zeigt den Effekt, aber sein Code bietet eine einfachere Möglichkeit, ihn auf einem vorhandenen Ansichts-Controller zu platzieren.
quelle
sizeWithFont:
einstellen, übernimmt er auf magische Weise das automatische Ausrichtungsverhalten der Standardbeschriftung.Ich weiß, dass dies ein ziemlich alter Thread ist, aber ich denke, es wäre nützlich, für neue Benutzer zu wissen, dass iOS 5 eine neue Eigenschaft zum Einrichten von Titeleigenschaften bietet.
Mit UINavigationBar können Sie
setTitleTextAttributes
Schriftart, Farbe, Versatz und Schattenfarbe einstellen.Darüber hinaus können Sie für alle
UINavigationBars
in Ihrer Anwendung dieselben Standard-Titeltextattribute von UINavigationBar festlegen .Zum Beispiel so:
quelle
In iOS 5 können Sie die Titelfarbe der Navigationsleiste folgendermaßen ändern:
quelle
UITextAttributeTextColor
aufNSForegroundColorAttributeName
. Klappt wunderbar!self.navigationController.navigationBar.tintColor
hat bei mir nicht funktioniert. Das hat es getan.Basierend auf Steven Fischers Antwort habe ich diesen Code geschrieben:
Der Vorteil dieses Codes besteht neben dem ordnungsgemäßen Umgang mit dem Frame darin, dass beim Ändern des Titels Ihres Controllers auch die benutzerdefinierte Titelansicht aktualisiert wird. Sie müssen es nicht manuell aktualisieren.
Ein weiterer großer Vorteil ist, dass es wirklich einfach ist, benutzerdefinierte Titelfarben zu aktivieren. Sie müssen diese Methode lediglich zum Controller hinzufügen.
quelle
Die meisten der oben genannten Vorschläge sind jetzt für iOS 7 veraltet -
Überprüfen Sie auch die Datei NSAttributedString.h auf verschiedene Texteigenschaften, die festgelegt werden können.
quelle
In IOS 7 und 8 können Sie die Farbe des Titels ändern, um beispielsweise Grün zu sagen
quelle
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Um die Frage auf dem neuesten Stand zu halten, werde ich die Alex RR- Lösung hinzufügen , aber in Swift :
Welche Ergebnisse zu:
quelle
Methode 1 , setzen Sie es in IB:
Methode 2 , eine Codezeile:
quelle
titleTextAttributes
nur mitDie Lösung von tewha funktioniert gut, wenn Sie versuchen, die Farbe auf einer Seite zu ändern, aber ich möchte in der Lage sein, die Farbe auf jeder Seite zu ändern. Ich habe einige kleine Änderungen vorgenommen, damit es für alle Seiten auf einem funktioniert
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
quelle
Ab iOS 5 müssen wir die Titeltextfarbe und die Schriftart der Navigationsleiste mithilfe des titleTextAttribute-Wörterbuchs (vordefiniertes Wörterbuch in der Klassenreferenz des UInavigation-Controllers) festlegen.
quelle
Schnelle Version
Ich fand, dass die meisten von euch die Antworten der Objective_C-Version präsentiert haben
Ich möchte diese Funktion implementieren, indem ich Swift für jeden verwende, der sie benötigt.
In ViewDidload
1.Um den Navigationsleistenhintergrund farbig zu machen (zum Beispiel: BLAU)
2.Um den Navigationsleistenhintergrund zu einem Bild zu machen (zum Beispiel: ABC.png)
3.Um den Titel der Navigationsleiste zu ändern (zum Beispiel: [Schriftart: Futura, 10] [Farbe: Rot])
Ich hoffe ich kann helfen !: D.
quelle
Verwenden Sie den folgenden Code in einer beliebigen View Controller-Methode viewDidLoad oder viewWillAppear.
quelle
Kurz und bündig.
quelle
Dies ist meine Lösung basierend auf Stevens
Der einzige wirkliche Unterschied besteht darin, dass ich etwas Handling zum Anpassen der Position einsetze, wenn es abhängig von der Textlänge ähnlich zu sein scheint, wie Apple es macht
Möglicherweise möchten Sie den Wert 10 abhängig von Ihrer Schriftgröße anpassen
quelle
Ich bin auf das Problem gestoßen, dass meine Navigationsschaltflächen den Text aus der Mitte geworfen haben (wenn Sie nur eine Schaltfläche haben). Um das zu beheben, habe ich gerade meine Rahmengröße wie folgt geändert:
quelle
Ich habe das Hintergrundbild und das Element der linken Schaltfläche der Navigationsleiste angepasst, und der graue Titel passt nicht zum Hintergrund. Dann benutze ich:
um die Farbtonfarbe in grau zu ändern. Und der Titel ist jetzt weiß! Das ist, was ich will.
Hoffe auch zu helfen :)
quelle
Es wird empfohlen, self.title festzulegen, da dies verwendet wird, wenn untergeordnete Navigationsleisten verschoben oder Titel in Registerkarten angezeigt werden.
quelle
Dies ist ein ziemlich alter Thread, aber ich denke darüber nach, eine Antwort für die Einstellung von Farbe, Größe und vertikaler Position des Titels der Navigationsleiste für iOS 7 und höher zu geben
Für Farbe und Größe
Für vertikale Position
Legen Sie den Titel fest und weisen Sie das Attributwörterbuch zu
quelle
Das funktioniert bei mir in Swift:
quelle
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Swift 4 & 4.2 Version:
quelle
quelle
Um die Schriftgröße des Titels festzulegen, habe ich folgende Bedingungen verwendet. Vielleicht hilfreich für jeden
quelle
Ein Update des Beitrags von Alex RR unter Verwendung der neuen iOS 7-Textattribute und des modernen Ziels c für weniger Lärm:
quelle
Ich glaube, der richtige Weg, um die Farbe einzustellen,
UINavigationBar
ist:Der obige Code ist in Unterklasse geschrieben
UINavigationBar
und funktioniert offensichtlich auch ohne Unterklasse.quelle
[UINavigationBar appearance]
und festlegen kann (angesichts der Tricks, die mit Unterklassen verbunden sindUINavigationBar
, eine bevorzugte Lösung).Verwenden Sie diese Option zur Unterstützung der Orientierung
quelle
Dies ist eines der Dinge, die fehlen. Am besten erstellen Sie Ihre eigene Navigationsleiste, fügen ein Textfeld hinzu und bearbeiten die Farbe auf diese Weise.
quelle
Nachdem das gleiche Problem (wie bei anderen) des Etiketts aufgetreten ist, das sich beim Einfügen einer Schaltfläche in die Navigationsleiste bewegt (in meinem Fall habe ich einen Drehknopf, den ich beim Laden des Datums durch eine Schaltfläche ersetze), haben die oben genannten Lösungen nicht funktioniert Für mich hat also Folgendes funktioniert und das Label die ganze Zeit am selben Ort gehalten:
quelle
Sie sollten [label sizeToFit] aufrufen. Nach dem Festlegen des Texts, um seltsame Versätze zu vermeiden, wenn die Beschriftung automatisch in der Titelansicht neu positioniert wird, wenn andere Schaltflächen die Navigationsleiste belegen.
quelle
Kann diese Methode in der Appdelegate-Datei verwenden und in jeder Ansicht verwenden
quelle
titleTextAttributes Zeigt Attribute für den Titeltext der Leiste an.
@property (nichtatomar, kopiert) NSDictionary * titleTextAttributes Diskussion Sie können die Schriftart, die Textfarbe, die Textschattenfarbe und den Textschattenversatz für den Titel im Textattributwörterbuch mithilfe der in NSString UIKit Additions Reference beschriebenen Textattributschlüssel angeben.
Verfügbarkeit Verfügbar in iOS 5.0 und höher. In UINavigationBar.h deklariert
quelle