it-swarm.com.de

Ändern Sie die Farbe des ausgewählten Registerkartenelements in einem Storyboard

Ich möchte, dass die Elemente in der Registerkartenleiste pink angezeigt werden, wenn sie anstelle des Standardblaus ausgewählt werden.

Wie kann ich das mit dem Storyboard-Editor in Xcode 6 erreichen?

Hier sind meine aktuellen Einstellungen, die nicht funktionieren, der blaue Hintergrund funktioniert, aber das Rosa funktioniert nicht:

enter image description here

157
Deekor

Fügen Sie das Runtime-Farbattribut "tintColor" aus StoryBoard hinzu. Dies funktioniert (für Xcode 8 und höher).

wenn Sie eine nicht ausgewählte Farbe wünschen, können Sie auch unselectedItemTintColor hinzufügen.

setting tintColor as Runtime Attribute

384
Mehul Thakkar

Diese elegante Lösung eignet sich hervorragend für Swift 3.0 und Swift 4.0 :

Auf dem Storyboard:

  1. Wählen Sie Ihre Tab-Leiste
  2. Setzen Sie ein Runtime Attibute namens tintColor für die gewünschte Farbe des ausgewählten Symbols auf der Registerkarte
  3. Setzen Sie eine Runtime Attibute aufgerufene unselectedItemTintColor für die gewünschte Farbe des nicht ausgewählten Symbols auf der Registerkarte

enter image description here

Bearbeiten: Getestet mit Xcode 8 für iOS 10 und höher.

153

In Swift können Sie mit xcode 7 (und höher) Folgendes zu Ihrer AppDelegate.Swift-Datei hinzufügen:

UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

So sieht die vollständige Methode aus:

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

    // I added this line
    UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)

    return true
}

Im obigen Beispiel ist mein Artikel weiß. Das "/255.0" wird benötigt, weil es einen Wert von 0 bis 1 erwartet. Für Weiß hätte ich einfach 1 verwenden können. Für andere Farben werden Sie wahrscheinlich RGB-Werte verwenden.

58
Jarrod

Auf Xcode8 Ich habe das ImageTint aus dem Storyboard geändert und es funktioniert gut.

enter image description here

Das Ergebnis:

enter image description here

44

Swift 3 | Xcode 10

Wenn Sie möchten , dass alle Elemente der Registerkartenleiste dieselbe Farbe haben (ausgewählt & nicht ausgewählt) ...


Schritt 1

Stellen Sie sicher, dass Ihre Bildressourcen auf Rendern als = Vorlagenbild eingestellt sind. Dies ermöglicht es ihnen, Farbe zu erben.

Xcode Assets


Schritt 2

Verwenden Sie den Storyboard-Editor, um die Einstellungen Ihrer Registerkartenleiste wie folgt zu ändern:

  • Setzen Sie Tab Bar: Image Tint auf die Farbe, die das ausgewählte Symbol übernehmen soll.
  • Setzen Sie Tab Bar: Bar Tint auf die Farbe, die die Tab Bar haben soll.
  • Setzen Sie View: Tint auf die Farbe, die im Storyboard-Editor angezeigt werden soll. Dies wirkt sich nicht auf die Symbolfarbe aus, wenn Ihre App ausgeführt wird.

Xcode Storyboard Editor


Schritt 3

Die Schritte 1 und 2 ändern die Farbe für das ausgewählte Symbol. Wenn Sie weiterhin die Farbe der nicht ausgewählten Elemente ändern möchten, müssen Sie dies im Code tun. Ich habe keine Möglichkeit gefunden, dies über den Storyboard-Editor zu tun.

Erstellen Sie eine benutzerdefinierte Klasse ...

//  TabBarController.Swift

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // make unselected icons white
        self.tabBar.unselectedItemTintColor = UIColor.white
    }
}

... und weisen Sie die benutzerdefinierte Klasse Ihrem Szenen-Controller für die Registerkartenleiste zu.

Xcode Storyboard Editor


Wenn Sie über den Storyboard-Editor herausfinden, wie Sie die nicht ausgewählte Symbolfarbe ändern können, lassen Sie es mich bitte wissen. Vielen Dank!

16
Derek Soike

fügen Sie diesen Code in viewDidLoad des View Controllers ein, dessen Farbe Sie ändern möchten

[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
9
Nick

XCode 8.2, iOS 10, Swift 3: jetzt gibt es ein unselectedItemTintColor Attribut für tabBar:

self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)
7
ComboPrime

Sie können die Farbe des ausgewählten Bildbalkens auch über den Schlüsselpfad festlegen:

enter image description here

Hoffe das wird dir helfen !! Vielen Dank

7
Arvind Kumar

Sie können die Farben von UITabBarItem über das Storyboard ändern. Wenn Sie jedoch die Farben über den Code ändern möchten, ist dies ganz einfach:

// Hiermit können Sie die Farbe des ausgewählten Balkens ändern

   [[UITabBar appearance] setTintColor:[UIColor blueColor]];

// Dies für Änderung nicht ausgewählte Leiste (iOS 10)

   [[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];

// Und diese Zeile zum Ändern der Farbe aller Registerkarten

   [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
6
Genevios

Fügen Sie diesen Code in die Funktion -did_finish_launching_with_options Ihres App-Delegaten ein

UITabBar.appearance().tintColor = UIColor( red: CGFloat(255/255.0), green: CGFloat(99/255.0), blue: CGFloat(95/255.0), alpha: CGFloat(1.0) )

stellen Sie das RGB der gewünschten Farbe ein

5
SHINTO JOSEPH

Irgendwie sind wir nicht in der Lage, die Farbe des in der Tab-Leiste ausgewählten Elements mithilfe des Storyboards zu ändern. Daher habe ich in ViewDidLoad den folgenden Code hinzugefügt, hoffentlich hilft dies.

[[UITabBar appearance] setTintColor:[UIColor whiteColor]]; 
5
skypirate

Dies ist die Lösung in Swift 3, die in iOS 10 funktioniert:

Zunächst erstellen Sie eine eigene Registerkarten-Controller-Unterklasse und fügen sie Ihrem Registerkarten-Controller in Ihrem Storyboard hinzu. In der viewDidLoad() -Methode können Sie dann die Registerkartenleiste anpassen. Es sollte hier angegeben werden, dass das tintColor -Attribut des tabBar die Farbe des ausgewählten Elements und nicht die Farbe der nicht ausgewählten Elemente darstellt! Um die Farbe der nicht ausgewählten Elemente zu ändern, empfehle ich, die einzelnen Elemente zu durchlaufen und die Originalfarben Ihrer Bilder zu verwenden, damit sie nicht automatisch grau dargestellt werden.

class CustomTabBarVC: UITabBarController
{
    override func viewDidLoad()
    {
        super.viewDidLoad()

        self.tabBar.tintColor = AppColor.normalRed
        self.tabBar.barTintColor = .white
        self.tabBar.isTranslucent = true

        if let items = self.tabBar.items
        {
            for item in items
            {
                if let image = item.image
                {
                    item.image = image.withRenderingMode( .alwaysOriginal )
                }
            }
        }
    }
}

Der einzige Nachteil bei diesem Ansatz ist, dass Ihre Artikelbilder bereits die gewünschte Farbe haben müssen, die Sie anstreben.

4
AndreasLukas

Dieser beste Weg ist, Image Tint im Storyboard

3
Jadian

Sie können das UITabBarController in Unterklassen unterteilen und das im Storyboard durch das andere ersetzen. Rufen Sie in Ihrer viewDidLoad -Implementierung der Unterklasse Folgendes auf:

[self.tabBar setTintColor:[UIColor greenColor]];
2
chancyWu