Chcę zmienić moje elementy paska kart na różowe po wybraniu zamiast domyślnego niebieskiego.
Jak mogę to osiągnąć za pomocą edytora scenariuszy w Xcode 6?
Oto moje obecne ustawienia, które nie działają, niebieskie tło działa, ale różowy nie działa:

Chcę zmienić moje elementy paska kart na różowe po wybraniu zamiast domyślnego niebieskiego.
Jak mogę to osiągnąć za pomocą edytora scenariuszy w Xcode 6?
Oto moje obecne ustawienia, które nie działają, niebieskie tło działa, ale różowy nie działa:

Odpowiedzi:
Dodaj atrybut Runtime Color o nazwie „tintColor” ze StoryBoard. To działa ( dla Xcode 8 i nowszych ).
jeśli chcesz niewybrany kolor ... możesz unselectedItemTintColorteż dodać .

UITabBarItem, na UINavigationControllerpodłączonym do mojego tabBaru i działa bezbłędnie. Wszystko to bez pisania kodu, co jest świetne, ponieważ trzykrotnie używam klasy VC. Dzięki!
To eleganckie rozwiązanie działa świetnie na SWIFT 3.0 , SWIFT 4.2 i SWIFT 5.1 :
Na Storyboard:
Edycja: praca z Xcode 8/10, iOS 10/12 i nowszym .
W Swift, używając xcode 7 (i nowszych), możesz dodać następujące elementy do pliku AppDelegate.swift:
UITabBar.appearance().tintColor = UIColor(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: 1.0)
Oto jak wygląda cała metoda:
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
}
W powyższym przykładzie mój przedmiot będzie biały. „/255.0” jest potrzebne, ponieważ oczekuje wartości od 0 do 1. W przypadku bieli mogłem po prostu użyć 1. Ale dla innych kolorów prawdopodobnie użyjesz wartości RGB.
Swift 3 | Xcode 10
Jeśli chcesz, aby wszystkie elementy paska kart miały ten sam kolor (zaznaczone i niezaznaczone) ...
Krok 1
Upewnij się, że zasoby obrazu są skonfigurowane do renderowania jako = obraz szablonu . To pozwala im dziedziczyć kolor.
Krok 2
Użyj edytora scenorysów, aby zmienić ustawienia paska kart w następujący sposób:
Krok 3
Kroki 1 i 2 zmienią kolor wybranej ikony. Jeśli nadal chcesz zmienić kolor niezaznaczonych elementów, musisz to zrobić w kodzie. Nie znalazłem sposobu, aby to zrobić za pomocą edytora scenariuszy.
Utwórz niestandardową klasę kontrolera paska kart ...
// TabBarController.swift
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// make unselected icons white
self.tabBar.unselectedItemTintColor = UIColor.white
}
}
... i przypisz niestandardową klasę do kontrolera sceny paska kart.
Jeśli dowiesz się, jak zmienić niewybrany kolor ikony za pomocą edytora scenorysów, daj mi znać. Dzięki!
self.tabBar.unselectedItemTintColor = UIColor.white self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1) Pracuj dla mnie
umieść ten kod w viewDidLoad kontrolera widoku, którego kolor chcesz zmienić
[[UITabBar appearance] setSelectedImageTintColor:[UIColor whiteColor]];
Możesz również ustawić odcień wybranego koloru paska obrazu za pomocą ścieżki klucza:
Mam nadzieję, że to ci pomoże !! Dzięki
XCode 8.2, iOS 10, Swift 3: teraz istnieje unselectedItemTintColoratrybut dla tabBar:
self.tabBar.unselectedItemTintColor = UIColor(red: 0/255.0, green: 200/255.0, blue: 0/255.0, alpha: 1.0)
Możesz zmienić kolory UITabBarItem według scenorysu, ale jeśli chcesz zmienić kolory według kodu, jest to bardzo łatwe:
// Użyj tego do zmiany koloru wybranego paska
[[UITabBar appearance] setTintColor:[UIColor blueColor]];
// Pasek niezaznaczony dla zmiany (iOS 10)
[[UITabBar appearance] setUnselectedItemTintColor:[UIColor yellowColor]];
// I ta linia do zmiany koloru wszystkich zakładek
[[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
Dodaj ten kod do funkcji delegata aplikacji -did_finish_launching_with_options
UITabBar.appearance().tintColor = UIColor( red: CGFloat(255/255.0), green: CGFloat(99/255.0), blue: CGFloat(95/255.0), alpha: CGFloat(1.0) )
umieść RGB wymaganego koloru
Oto rozwiązanie w Swift 3, które działa w iOS 10:
Po pierwsze, tworzysz własną podklasę kontrolera paska kart i dodajesz ją do kontrolera kart w swoim storyboardzie. W viewDidLoad()metodzie możesz następnie dostosować pasek kart. W tym miejscu należy zaznaczyć, że tintColoratrybut z tabBarreprezentuje kolor wybranej pozycji, a nie kolor niewybranych! Aby zmienić kolor niezaznaczonych elementów, zalecamy przejrzenie każdego elementu w pętli i użycie oryginalnych kolorów obrazów, aby nie były automatycznie renderowane jako szare.
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 )
}
}
}
}
}
Jedynym minusem tego podejścia jest to, że obrazy przedmiotów muszą już mieć żądany kolor.
Możesz podklasować UITabBarControlleri zastąpić go w serii ujęć. W swojej viewDidLoadimplementacji podklasy nazwij to:
[self.tabBar setTintColor:[UIColor greenColor]];
'UITabBar' does not have a member named 'setSelectedImageTintColor'
self.tabBar.setSelectedImageTintColor = UIColor.greenColor
tintColornie jest selectedImageTintColor, btw selectedImageTintColorjest przestarzałe w iOS 8.