2014-07-10 17 views
7

Ustawiłem globalny tintColor i widzę go w konstruktorze interfejsów, kiedy wybieram UITabBar, a także UITabBarController, wciąż po uruchomieniu aplikacji, odcieniem wybranego UITabBarItem jest iOS domyślnie (niebieski), a nie to, co ustawiłem. czego mi brakuje?UITabBar tintColor nie został zmieniony storyboard

P.S. UITabBarController jest popychany do navigationController, to nie jest rootViewController

Odpowiedz

10

użyć tego kodu w didFinishLaunchingWithOptions: metody swojej appDelegate

[[UITabBar appearance] setSelectedImageTintColor: [UIColor redColor]]; 

Zastąp kolor czerwony kolor chcesz.

+0

działa świetnie! dzięki. – Dean

+0

Moja przyjemność, @Dean! –

+1

w iOS setSelectedImageTintColor przestarzałe, zamiast tego należy użyć tintColor.Wersja Swift: UITabBar.appearance(). TintColor = UIColor.red – Jurasic

4

Jeśli kierowania iOS 8 następnie

selectedImageTintColor jest przestarzałe w iOS 8 użycie tintColor

Swift

UITabBar.appearance().tintColor = UIColor.redColor() 

Cel c

[[UITabBar appearance] setTintColor: [UIColor redColor]]; 
+0

Umieszczam ten sam kod w appDelegate, ale nie działa, chociaż unselectedItemTintColor działa dobrze – nikhil84

12

Storyboard nie obsługuje jeszcze bezpośrednio. Ale można ustawić zdefiniowany przez użytkownika atrybut runtime w storybooku.

Wybierz pasek kart kontrolera paska kart. Select the tab bar of the tab bar controller.

Wybierz inspektora tożsamości. (Widok, w którym można ustawić klasę widoku.)

Select the identity inspector

A jeśli chcesz zmiany wybranego elementu za Odcień zamiast, po prostu użyj klucza Path selectedImageTintColor zamiast.

+0

To jest dobre rozwiązanie, ale nie jestem pewien, dlaczego nie działa na iOS 10. Rozwiązanie kodu autorstwa Scotta działa dobrze –

+0

Rozwiązanie autorstwa Scotta, ale ma inny problem, który zmienia kolor paska zakładek (wszystkie elementy na pasku zakładek), a nie jedną kartę! –

+0

To jest prawdziwy zwycięzca. Wystarczy połączyć to, co wiemy z obu odpowiedzi: ustaw kluczową ścieżkę jako "selectedImageTintColor" zamiast "tintColor" i voila -> nie wymaga kodu. – winfred

0

W mojej aplikacji chciałem, aby każdy kontroler ViewController miał unikalny kolor TabBarItem, gdy był prezentowany.

enter image description here

w IOS 8 ręczne dodanie atrybutów tintColor w ujęć działa dobrze, ale nie ma żadnego efektu w iOS 9/Xcode 8.

że rozwiązać ten problem, w tym następujący kod w każdym z moich dzieci TabBarController ViewControllers, przesłaniając każdą z ich funkcji ViewDidAppear().

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    self.tabBarController?.tabBar.tintColor = UIColor.whateverColor 
    //The rest of your code 
} 

Jest to bezpieczne w każdym ViewController, ze względu na? po wywołaniu tabBarController. Jeśli ViewController nie jest osadzony w TabBarController, cała linia jest po prostu ignorowana.

Umieszczając ten kod w każdym ze swoich VC, można łatwo określić kolor każdego TabBarItem.

Powiązane problemy