2014-09-13 19 views
6

Po prostu chciałbym móc zmienić kolorowanie nie wybranych pozycji w moim pasku kart.Zmiana UITabBarItem Niewybrany odcień koloru - Swift

Zobacz poniżej jęczmienia obiektu "Najczęściej oglądany", który można odczytać w domyślnym kolorze.

Oto kod próbowałem wdrożenia:

UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object: UIColor.greenColor(), forKey: NSFontAttributeName), forState: UIControlState.Normal) 

enter image description here

Jednak użycie tego kodu nie działa. Czy ktoś wie, jak osiągnąć ten efekt, szczególnie w szybkim tempie?


Odpowiedz

2

Od UITabBarItem klasy docs:

Domyślnie rzeczywiste niezaznaczone i wybrane obrazy są tworzone automatycznie na podstawie wartości alfa w obrazach źródłowych. Aby zapobiec kolorowaniu systemu, należy dostarczyć obrazy z UIImageRenderingModeAlwaysOriginal.

Kluczem nie jest to, czy używasz UIImageRenderingModeAlwaysOriginal, ważne jest, kiedy go używać.

Aby zabezpieczyć szary kolor przed niezaznaczonymi przedmiotami, należy po prostu zapobiec kolorowaniu systemu dla niewybranego obrazu. Oto jak to zrobić:

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 

Jak widać, poprosiłem iOS zastosować oryginalny kolor (biały, żółty, czerwony, cokolwiek) obrazu tylko dla państwa zaznaczone, i pozostawić obraz jako to jest dla stanu WYBRANE.

Może być konieczne dodanie koloru paska na pasku, aby zastosować inny kolor dla stanu WYBRANE (zamiast domyślnego niebieskiego koloru iOS). Jak na powyższym zrzucie ekranu, stosuje się biały kolor dla wybranego stanu:

self.tabBar.tintColor = UIColor.whiteColor() 
0

Wydaje się po prostu błąd składni; spróbuj tak:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.greenColor()], forState: .Normal) 

lub (w tym obraz jeśli powyższe nie):

UITabBarItem.appearance().setTintColor(UIColor.greenColor());