Ändern der Bild- und Textfarbe des Registerkartenleistenelements iOS

75

Hier ist meine Registerkartenleiste:

Geben Sie hier die Bildbeschreibung ein

Das folgende Bild zeigt das ausgeführte Programm und das ausgewählte Element "NEWS":

Geben Sie hier die Bildbeschreibung ein

Es ist klar, dass die Farbe der Balkentönung gut funktioniert, wie ich will!

Die tintColor wirkt sich jedoch nur auf das Bild und nicht auf den Text aus.

Wenn ein Artikel ausgewählt wird (wie oben gezeigt, Nachrichten), wird die Artikelfarbe blau! Wie verhindere ich dies? Ich möchte, dass es weiß bleibt.

Warum ändert sich der Text bei Auswahl in eine weiße Farbe, aber nicht, wenn er nicht ausgewählt ist?

Grundsätzlich möchte ich, dass die Elementfarbe und die Textfarbe immer weiß sind.

Wie erreiche ich das? Vielen Dank für jede Hilfe.

Benötigt es einen schnellen Code für jeden einzelnen Artikel?

BEARBEITEN:

Geben Sie hier die Bildbeschreibung ein

Greg Peckory
quelle
Können Sie Bilder für alle Symbole in Weiß und Grau erstellen und bei Bedarf ändern?
Max
Das Bild wird blau, wenn es ausgewählt ist, und der Text ist weiß, wenn es nicht ausgewählt ist. Ich weiß nicht warum ... das ist mein Problem
Greg Peckory

Antworten:

85

Aus UITabBarItem-Klassendokumenten:

Standardmäßig werden die tatsächlich nicht ausgewählten und ausgewählten Bilder automatisch aus den Alpha-Werten in den Quellbildern erstellt. Stellen Sie Bilder mit UIImageRenderingModeAlwaysOriginal bereit, um Systemfarben zu vermeiden.

Der Hinweis ist nicht, ob Sie UIImageRenderingModeAlwaysOriginal verwenden. Wichtig ist, wann Sie es verwenden.

Um die graue Farbe für nicht ausgewählte Elemente zu verhindern, müssen Sie nur die Systemfarbe für das nicht ausgewählte Bild verhindern. So geht's:

var firstViewController:UIViewController = UIViewController()
// The following statement is what you need
var customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "YOUR_IMAGE_NAME")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), selectedImage: UIImage(named: "YOUR_IMAGE_NAME"))
firstViewController.tabBarItem = customTabBarItem

Wie Sie sehen können, habe ich iOS gebeten, die Originalfarbe (Weiß, Gelb, Rot usw.) NUR für den Status NICHT AUSGEWÄHLT anzuwenden und das Bild so zu belassen, wie es für den Status AUSGEWÄHLT ist.

Möglicherweise müssen Sie auch eine Farbtonfarbe für die Registerkartenleiste hinzufügen, um eine andere Farbe für den Status AUSGEWÄHLT anzuwenden (anstelle der standardmäßigen blauen iOS-Farbe). Gemäß dem obigen Screenshot wenden Sie für den ausgewählten Status eine weiße Farbe an:

self.tabBar.tintColor = UIColor.whiteColor()

BEARBEITEN:

Geben Sie hier die Bildbeschreibung ein

Kingofmit
quelle
Muss ich eine Klasse erstellen, die der Registerkartenleiste entspricht, um diesen Code einzugeben?
Greg Peckory
@GregoryPeck in AppDelegate oder Erstellen Sie Ihre eigene TabBarClass, aber vergessen Sie nicht, es über Interface Builder
Kingofmit
Ich habe die tintColor oben eingestellt, wie Sie sehen können. Außerdem habe ich das Rendern als Originalbild festgelegt, siehe Bearbeiten.
Greg Peckory
Und wo soll ich den Code setzenfirstViewController.tabBarItem = customTabBarItem
Greg Peckory
2
Entschuldigung für alle Fragen, aber ich bin mir nicht sicher, wie ich die Tab Bar-Klasse erstellen soll. dh- TabBarClass: ??, ??und ich kann es scheinbar nicht mit meiner Registerkartenleiste verbinden. Ist es die Registerkartenleiste oder die Registerkartensteuerung, an die ich sie anschließen muss?
Greg Peckory
73

Swift 3

Ich habe dazu einen benutzerdefinierten Tabbar-Controller erstellt und diesen Code in die viewDidLoadMethode eingefügt .

    if let count = self.tabBar.items?.count {
        for i in 0...(count-1) {
            let imageNameForSelectedState   = arrayOfImageNameForSelectedState[i]
            let imageNameForUnselectedState = arrayOfImageNameForUnselectedState[i]

            self.tabBar.items?[i].selectedImage = UIImage(named: imageNameForSelectedState)?.withRenderingMode(.alwaysOriginal)
            self.tabBar.items?[i].image = UIImage(named: imageNameForUnselectedState)?.withRenderingMode(.alwaysOriginal)
        }
    }

    let selectedColor   = UIColor(red: 246.0/255.0, green: 155.0/255.0, blue: 13.0/255.0, alpha: 1.0)
    let unselectedColor = UIColor(red: 16.0/255.0, green: 224.0/255.0, blue: 223.0/255.0, alpha: 1.0)

    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: unselectedColor], for: .normal)
    UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: selectedColor], for: .selected)

Es hat bei mir funktioniert!

Geben Sie hier die Bildbeschreibung ein

AMarones
quelle
1
In Swift 4 wurde "NSForegroundColorAttributeName" in "NSAttributedStringKey.foregroundColor" umbenannt.
Alienbash
... und in Swift4.2 wurde "NSAttributedStringKey" in "NSAttributedString.Key" umbenannt.
XLE_22
53

Schnell


Für Bild:

custom.tabBarItem = UITabBarItem(title: "Home", image: UIImage(named: "tab_icon_normal"), selectedImage: UIImage(named: "tab_icon_selected"))

Für Text:

UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.gray], for: .normal)
    
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.red], for: .selected)
Rajesh Loganathan
quelle
47

Swift 4.2 und Xcode 10

Die Lösung, die für mich funktioniert hat:

  1. Bildeinrichtung - aus dem Storyboard-Set Leistenelementbild und ausgewähltes Bild. Um die Farbtonüberlagerung auf den Bildern zu entfernen, gehen Sie zum Assets-Katalog, wählen Sie das Bild aus und ändern Sie den Rendermodus wie folgt:

Bildwiedergabemodus

Dadurch wird verhindert, dass die Tab-Leistenkomponente ihren Standardbildton einstellt.

  1. Text - hier habe ich eine einfache UITabBarController-Unterklasse erstellt und in der viewDidLoad-Methode die Standard- und ausgewählte Textfarbe wie folgt angepasst:

    class HomeTabBarController: UITabBarController {
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let appearance = UITabBarItem.appearance(whenContainedInInstancesOf: [HomeTabBarController.self])
            appearance.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: .black], for: .normal)
            appearance.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: .red], for: .selected)
        }
    }
    

Legen Sie diese Klasse einfach im Identitätsinspektor in IB als benutzerdefinierte Klasse für den Tab-Bar-Controller fest.

Voila! Das ist es.

iOS 13 Update :

Fügen Sie dies Ihrem Setup für iOS 13 hinzu:

if #available(iOS 13, *) {
    let appearance = UITabBarAppearance()
    appearance.stackedLayoutAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: .red]
    tabBar.standardAppearance = appearance
}
Vasil Garov
quelle
Dies sollte die akzeptierte Antwort sein, wenn Sie dies mit dem Inspektor tun möchten! Vielen Dank, dies hat mein Problem gelöst
Emanuel Amiguinho
Vielen Dank, Ihr iOS 13-Update hat mir wirklich geholfen. Ich hatte einen seltsamen Fehler, bei dem die ausgewählte Elementtextfarbe beim ersten Erstellen der Registerkartenleiste korrekt war. Nachdem die Registerkartenleiste jedoch ausgeblendet und wieder angezeigt wurde (z. B. Vollbildmodal anzeigen und dann schließen), wurde durch Ändern der Registerkarten die ausgewählte Elementtextfarbe auf die zurückgesetzt Farbton. Durch Hinzufügen des iOS 13-Setups wurde das Problem behoben.
Saul
16

Swift 3

Dies hat bei mir funktioniert (unter Bezugnahme auf die Bildfarben von tabBarItems):

UITabBar.appearance().tintColor = ThemeColor.Blue

if let items = tabBarController.tabBar.items {
        let tabBarImages = getTabBarImages() // tabBarImages: [UIImage]
        for i in 0..<items.count {
            let tabBarItem = items[i]
            let tabBarImage = tabBarImages[i]
            tabBarItem.image = tabBarImage.withRenderingMode(.alwaysOriginal)
            tabBarItem.selectedImage = tabBarImage
        }
    }

Ich habe festgestellt, dass die UITabBar.tintColor keine Auswirkung hat, wenn Sie das Bild mit dem Rendermodus = .alwaysOriginal festlegen.

Bartosz Olszanowski
quelle
14

Swift 4: Ändern Sie es in Ihrem UITabBarController durch diesen Code

tabBar.unselectedItemTintColor = .black
Mixon McLaren
quelle
12

Swift 3

Stellen Sie zunächst sicher, dass Sie der Info.plist die BOOLEAN-Taste "Controller-basiertes Erscheinungsbild der Statusleiste anzeigen" hinzugefügt haben, und setzen Sie den Wert auf "NO".

Appdelegate.swift

Fügen Sie irgendwo nach "launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {" Code ein.

  1. Ändern Sie die Farbe der Registerkartenleiste selbst mit dem RGB-Farbwert:

UITabBar.appearance().barTintColor = UIColor(red: 0.145, green: 0.592, blue: 0.804, alpha: 1.00)

ODER eine der Standardfarben der Benutzeroberfläche:

UITabBar.appearance().barTintColor = UIColor.white)


  1. Ändern Sie die Textfarbe der Registerkartenelemente:

Das ausgewählte Element

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.white], for: .selected)

Die inaktiven Elemente

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.black], for: .normal)

  1. Um die Farbe des Bildes zu ändern, ist es meines Erachtens am einfachsten, Bilder zu trennen, eines für jeden Zustand.

Wenn Sie die Symbole nicht von Grund auf neu erstellen, sind abwechselnde Schwarz-Weiß-Versionen in Photoshop relativ einfach zu erstellen.


Adobe Photoshop (fast jede Version reicht aus)

Stellen Sie sicher, dass Ihr Symbolbild einen transparenten Hintergrund hat und das Symbol selbst schwarz (oder geschlossen) ist.

Öffnen Sie die Bilddatei und speichern Sie sie unter einem anderen Dateinamen (z. B. exampleFilename-Inverted.png).

Im Untermenü "Anpassungen" im Menü "Bild":

Klicken Sie auf "Invertieren"

Sie haben jetzt ein Negativ Ihres ursprünglichen Symbols.

Legen Sie in XCode eines der Bilder unter "Eigenschaften der Registerkartenleiste" in Ihrem Storyboard als "Ausgewähltes Bild" fest und geben Sie die "inaktive" Version unter dem Bild "Balkenelement" an.

Ta-Da 🍺

Andreas
quelle
Für Ihren 3. Punkt können Sie ihn ohne Verwendung von Photoshop wie UITabBar.appearance().tintColor = UIColor.black
folgt
@ChaudhryTalha, die Tönungsfarbe funktioniert für den ausgewählten Status des Registerkartensymbols. Gibt es für nicht ausgewählte Statussymbolfarben (unter <iOS10) eine ähnliche Eigenschaft, die geändert werden kann?
anoo_radha
10

Versuchen Sie es in AppDelegate.swift (innerhalb der Anwendungsmethode ) hinzuzufügen :

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

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

Beispiel:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Tab bar icon selected color
    UITabBar.appearance().tintColor = UIColor(red: 0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0)
    // For WHITE color: UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)
    return true
}

Beispiel:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Mein Englisch ist so schlecht! Es tut mir Leid! :-)

Fred Sousa
quelle
9

Ich weiß, dass es hier viele Antworten gibt, aber ich kann keine einfache und gültige Antwort zum Kopieren / Einfügen für Swift 4.2 / Swift 5.1 finden

tabBarController?.tabBar.tintColor = UIColor.red
tabBarController?.tabBar.unselectedItemTintColor = UIColor.green

Oder verwenden Sie UITabBarItem.appearance()anstelle vontabBarController?.tabBar

Bilder müssen UIImageRenderingModeAlwaysTemplate sein

Kuzdu
quelle
4

Swift 3.0

Ich habe die Tabbar-Klassendatei erstellt und den folgenden Code geschrieben

In viewDidLoad:

self.tabBar.barTintColor = UIColor.white
self.tabBar.isTranslucent = true

let selectedColor   = UIColor.red
let unselectedColor = UIColor.cyan

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: unselectedColor,NSFontAttributeName: UIFont(name: "Gotham-Book", size: 10)!], for: .normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: selectedColor,NSFontAttributeName: UIFont(name: "Gotham-Book", size: 10)!], for: .selected)

if let items = self.tabBar.items {
    for item in items {
        if let image = item.image {
            item.image = image.withRenderingMode( .alwaysOriginal )
            item.selectedImage = UIImage(named: "(Imagename)-a")?.withRenderingMode(.alwaysOriginal)
        }
    }
}

Nachher viewDidLoad:

   override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

   if(item.title! == "title")
   {
    item.selectedImage = UIImage(named: "(Imagname)-a")?.withRenderingMode(.alwaysOriginal)

    }
    if(item.title! == "title")
    {
        item.selectedImage = UIImage(named: "(Imagname)-a")?.withRenderingMode(.alwaysOriginal)

    }
    if(item.title! == "title")
    {
        item.selectedImage = UIImage(named: "(Imagname)-a")?.withRenderingMode(.alwaysOriginal)

    }
    if(item.title! == "title")
    {
        item.selectedImage = UIImage(named: "(Imagname)-a")?.withRenderingMode(.alwaysOriginal)

    }
    if(item.title! == "title")
    {
        item.selectedImage = UIImage(named: "(Imagname)-a")?.withRenderingMode(.alwaysOriginal)

    }

}

In der Ansicht hat die Lademethode Sie müssen das ausgewählte Bild festlegen und andere Bilder werden mit RenderingMode angezeigt. In den Registerkartenleisten-Delegierungsmethoden legen Sie das ausgewählte Bild gemäß Titel fest

Amol Pokale
quelle
4

Für Swift 4.0 wurde es jetzt wie folgt geändert:

tabBarItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.gray], for: .normal)
tabBarItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.blue], for: .selected)

Sie müssen das UITabBarItem nicht unterordnen, wenn Sie nur die Textfarbe ändern möchten. Fügen Sie einfach den obigen Code in die viewDidLoadFunktion Ihres View Controllers ein .

Für globale Einstellungen ändern Sie tabBarItemzu UITabBarItem.appearance().

Eric Yuan
quelle
3

In Swift 4.2:

UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.white], for: .normal)
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.red], for: .selected)
Vinu Jacob
quelle
1
Ich habe es in AppDelegate unter func application abgelegt. Funktioniert super!
Steffo Dimfelt
2

Sie können tintColor von UIBarItem festlegen:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.magentaColor()], forState:.Normal)
UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.redColor()], forState:.Selected)
Sunil Prajapati
quelle
2

Sie können dies auch folgendermaßen tun:

override func viewWillLayoutSubviews() {  
  if let items = self.tabBar.items {
    for item in 0..<items.count {
      items[item].image = items[item].image?.withRenderingMode(.alwaysOriginal)
            items[item].selectedImage = items[item].selectedImage?.withRenderingMode(.alwaysTemplate)
    }

Optional:

 UITabBar.appearance().tintColor = UIColor.red

Ich hoffe es hilft dir.

VD Purohit
quelle
2

Jahr: 2020 iOS 13.3

Kopieren Sie die folgenden Codes nach AppDelegate.swift -> func didFinishLaunchingWithOptions

//Set Tab bar text/item fonts and size
let fontAttributes = [NSAttributedString.Key.font: UIFont(name: "YourFontName", size: 12.0)!]
UITabBarItem.appearance().setTitleTextAttributes(fontAttributes, for: .normal)
//Set Tab bar text/item color
UITabBar.appearance().tintColor = UIColor.init(named: "YourColorName")
Himmel
quelle
2

Dieser Code funktioniert für Swift 4, wenn Sie das Bild Tab Bar Itembeim Drücken ändern möchten . Kopieren Sie die erste viewDidLoadMethode, die im Projekt ausgeführt wird, und fügen Sie sie ein

   let arrayOfImageNameForSelectedState:[String] = ["Image1Color", "Image2Color","Image3Color"]
   let arrayOfImageNameForUnselectedState: [String] = ["Image1NoColor","Image2NoColor","Image3NoColor"]


    print(self.tabBarController?.tabBar.items?.count)

    if let count = self.tabBarController?.tabBar.items?.count {
        for i in 0...(count-1) {
            let imageNameForSelectedState   = arrayOfImageNameForSelectedState[i]
            print(imageNameForSelectedState)
            let imageNameForUnselectedState = arrayOfImageNameForUnselectedState[i]
            print(imageNameForUnselectedState)
            self.tabBarController?.tabBar.items?[i].selectedImage = UIImage(named: imageNameForSelectedState)?.withRenderingMode(.alwaysOriginal)
            self.tabBarController?.tabBar.items?[i].image = UIImage(named: imageNameForUnselectedState)?.withRenderingMode(.alwaysOriginal)
        }
    }
Daniel Valenzuela
quelle
1

Von hier aus .

Jedes Element in der Registerkartenleiste enthält einen Titel, ein ausgewähltes Bild, ein nicht ausgewähltes Bild und einen Ausweiswert.

Verwenden Sie das Feld Bildtönung (selectedImageTintColor), um die Tönungsfarbe des Balkenelements anzugeben, wenn diese Registerkarte ausgewählt ist. Standardmäßig ist diese Farbe blau.

vp_gold
quelle
4
Der Link ist tot (404)
Maximelc
1

Swift 5:

let homeTab = UITabBarItem(title: "Home", image: UIImage(named: "YOUR_IMAGE_NAME_FROM_ASSETS")?.withRenderingMode(UIImage.RenderingMode.alwaysOriginal), tag: 1)
Areeb111
quelle
1

In Swift 5 ioS 13.2 haben sich die Dinge mit dem TabBar-Styling geändert.

Fügen Sie den folgenden Code in Ihre UITabBarController- Klasse ein.

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let appearance = UITabBarAppearance()
        appearance.backgroundColor = .white

        setTabBarItemColors(appearance.stackedLayoutAppearance)
        setTabBarItemColors(appearance.inlineLayoutAppearance)
        setTabBarItemColors(appearance.compactInlineLayoutAppearance)

        setTabBarItemBadgeAppearance(appearance.stackedLayoutAppearance)
        setTabBarItemBadgeAppearance(appearance.inlineLayoutAppearance)
        setTabBarItemBadgeAppearance(appearance.compactInlineLayoutAppearance)

        tabBar.standardAppearance = appearance
 }

@available(iOS 13.0, *)
private func setTabBarItemColors(_ itemAppearance: UITabBarItemAppearance) {
    itemAppearance.normal.iconColor = .lightGray
    itemAppearance.normal.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.gray]

    itemAppearance.selected.iconColor = .white
    itemAppearance.selected.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
}

@available(iOS 13.0, *)
private func setTabBarItemBadgeAppearance(_ itemAppearance: UITabBarItemAppearance) {
    //Adjust the badge position as well as set its color
    itemAppearance.normal.badgeBackgroundColor = .orange
    itemAppearance.normal.badgeTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
    itemAppearance.normal.badgePositionAdjustment = UIOffset(horizontal: 1, vertical: -1)
}
Malith Kuruwita
quelle
0

Fügen Sie einfach eine neue UITabBarController-Referenz zum Projekt hinzu. Erstellen Sie als Nächstes eine Referenz von UITabBar in diesem Controller:

@IBOutlet weak var appTabBar: UITabBar!

In seiner viewDidLoad () , fügen Sie einfach unten Titeltextfarbe :

    appTabBar.tintColor = UIColor.scandidThemeColor()

Für Bild

    tabBarItem = UITabBarItem(title: "FirstTab", image: UIImage(named: "firstImage"), selectedImage: UIImage(named: "firstSelectedImage"))
Shobhit C.
quelle
0

Unterordnen Sie Ihren TabbarViewController und geben Sie in ViewDidLoad diesen Code ein:

 [UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor darkGreyColorBT]} forState:UIControlStateNormal];
    [UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor nightyDarkColorBT]} forState:UIControlStateSelected];

    self.tabBar.items[0].image  = [[UIImage imageNamed:@"ic-pack [email protected]"]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[0].selectedImage  = [[UIImage imageNamed:@"[email protected]"]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[1].image = [[UIImage imageNamed:@"ic-sleeptracker [email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[1].selectedImage  = [[UIImage imageNamed:@"[email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[2].image = [[UIImage imageNamed:@"ic-profile [email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    self.tabBar.items[2].selectedImage  = [[UIImage imageNamed:@"[email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

Dies ist die einfachste Arbeitslösung, die ich habe

coolcool1994
quelle
0

Swift 5.3

let vc = UIViewController()
vc.tabBarItem.title = "sample"
vc.tabBarItem.image = UIImage(imageLiteralResourceName: "image.png").withRenderingMode(.alwaysOriginal)
vc.tabBarItem.selectedImage = UIImage(imageLiteralResourceName: "image.png").withRenderingMode(.alwaysOriginal)
        
// for text displayed below the tabBar item
UITabBarItem.appearance().setTitleTextAttributes([NSAttributedString.Key.foregroundColor: UIColor.black], for: .selected)
Bavafaali
quelle