Die UINavigationBar und die UISearchBar verfügen beide über eine tintColor-Eigenschaft, mit der Sie die Farbtonfarbe (überraschend, ich weiß) dieser beiden Elemente ändern können. Ich möchte das Gleiche mit der UITabBar in meiner Anwendung tun, habe aber jetzt einen Weg gefunden, sie von der Standardfarbe Schwarz zu ändern. Irgendwelche Ideen?
87
Antworten:
Ich konnte es zum Laufen bringen, indem ich einen UITabBarController unterklassifizierte und private Klassen verwendete:
quelle
iOS 5 hat einige neue Darstellungsmethoden hinzugefügt, um das Aussehen der meisten UI-Elemente anzupassen.
Sie können jede Instanz einer UITabBar in Ihrer App mithilfe des Darstellungs-Proxys als Ziel festlegen.
Für iOS 5 + 6:
Verwenden Sie für iOS 7 und höher Folgendes:
Durch die Verwendung des Darstellungs-Proxys werden alle Registerkartenleisteninstanzen in der gesamten App geändert. Verwenden Sie für eine bestimmte Instanz eine der neuen Eigenschaften für diese Klasse:
quelle
Ich habe einen Nachtrag zur endgültigen Antwort. Während das wesentliche Schema korrekt ist, kann der Trick der Verwendung einer teilweise transparenten Farbe verbessert werden. Ich gehe davon aus, dass dies nur dazu dient, den Standardverlauf durchscheinen zu lassen. Außerdem beträgt die Höhe der TabBar zumindest in OS 3 49 statt 48 Pixel.
Wenn Sie also ein geeignetes 1 x 49-Bild mit einem Farbverlauf haben, sollten Sie folgende Version von viewDidLoad verwenden:
quelle
Wenn Sie nur addSubview verwenden, verlieren Ihre Schaltflächen die Klickbarkeit
verwenden:
quelle
Es gibt keine einfache Möglichkeit, dies zu tun. Grundsätzlich müssen Sie UITabBar in Unterklassen unterteilen und benutzerdefinierte Zeichnungen implementieren, um das zu tun, was Sie möchten. Es ist ziemlich viel Arbeit für den Effekt, aber es kann sich lohnen. Ich empfehle, einen Fehler bei Apple einzureichen, um ihn einem zukünftigen iPhone SDK hinzuzufügen.
quelle
Das Folgende ist die perfekte Lösung dafür. Dies funktioniert gut mit mir für iOS5 und iOS4.
quelle
Unter iOS 7:
Ich empfehle auch, zuerst abhängig von Ihren visuellen Wünschen einzustellen:
Der Balkenstil setzt eine subtile Trennung zwischen Ihrem Ansichtsinhalt und Ihrer Registerkartenleiste.
quelle
[[self tabBar] insertSubview:v atIndex:0];
funktioniert perfekt für mich.quelle
Für mich ist es sehr einfach, die Farbe der Tabbar wie folgt zu ändern:
Versuche dies!!!
quelle
quelle
für nur Hintergrundfarbe
oder dies in App Delegate
zum Ändern der Farbe von nicht ausgewählten Symbolen der Registerkartenleiste
Für iOS 10:
Über iOS 10:
quelle
Die vorhandenen Antworten enthalten einige gute Ideen, viele funktionieren etwas anders, und was Sie auswählen, hängt auch davon ab, auf welche Geräte Sie abzielen und welche Art von Aussehen Sie erzielen möchten.
UITabBar
ist notorisch unintuitiv, wenn es darum geht, sein Erscheinungsbild anzupassen, aber hier sind ein paar weitere Tricks, die helfen können:1). Wenn Sie das glänzende Overlay für einen flacheren Look entfernen möchten, gehen Sie wie folgt vor:
2). Um benutzerdefinierte Bilder auf die Registerkartenschaltflächen festzulegen, gehen Sie wie folgt vor:
Wo
selected
undunselected
sindUIImage
Objekte Ihrer Wahl. Wenn Sie möchten, dass sie eine flache Farbe haben, besteht die einfachste Lösung darin, eineUIView
mit der gewünschten Farbe zu erstellenbackgroundColor
und sie dannUIImage
mit Hilfe von QuartzCore in eine zu rendern. Ich verwende die folgende Methode in einer KategorieUIView
, um eineUIImage
mit dem Inhalt der Ansicht zu erhalten:3) Schließlich möchten Sie möglicherweise das Design der Titel der Schaltflächen anpassen. Machen:
Auf diese Weise können Sie einige Anpassungen vornehmen, die jedoch immer noch recht begrenzt sind. Insbesondere können Sie die Position des Texts innerhalb der Schaltfläche nicht frei ändern und für ausgewählte / nicht ausgewählte Schaltflächen keine unterschiedlichen Farben festlegen. Wenn Sie ein spezifischeres Textlayout
UITextAttributeTextColor
erstellen möchten, stellen Sie einfach klar ein und fügen Sie Ihren Text in dieselected
undunselected
Bilder aus Teil (2) ein.quelle
quelle
Eine andere Lösung (die ein Hack ist) besteht darin, das Alpha auf dem tabBarController auf 0,01 zu setzen, so dass es praktisch unsichtbar und dennoch anklickbar ist. Legen Sie dann ein ImageView-Steuerelement am unteren Rand der MainWindow-Spitze mit Ihrem benutzerdefinierten Registerkartenbild unter dem Alpha-TabBarCOntroller fest. Tauschen Sie dann die Bilder aus, ändern Sie die Farben oder die Beleuchtung, wenn der Tabbarcontroller die Ansicht wechselt.
Sie verlieren jedoch das "... mehr" und passen die Funktionalität an.
quelle
Hallo, ich verwende iOS SDK 4 und konnte dieses Problem mit nur zwei Codezeilen lösen
Hoffe das hilft!
quelle
quelle
Schnelle 3.0-Antwort: (von Vaibhav Gaikwad)
Zum Ändern der Farbe von nicht ausgewählten Symbolen der Registerkartenleiste:
Nur zum Ändern der Textfarbe:
quelle
Swift 3 mit dem Erscheinungsbild von
AppDelegate
tun Sie Folgendes:UITabBar.appearance().barTintColor = your_color
quelle