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
unselectedItemTintColor
też dodać .źródło
UITabBarItem
, naUINavigationController
podłą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 .
źródło
W Swift, używając xcode 7 (i nowszych), możesz dodać następujące elementy do pliku AppDelegate.swift:
Oto jak wygląda cała metoda:
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.
źródło
Na
Xcode8
I zmieniliImageTint
od ujęć i to działa dobrze.Wynik:
źródło
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 ...
... 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!
źródło
self.tabBar.unselectedItemTintColor = UIColor.white
self.tabBar.tintColor = #colorLiteral(red: 0.2, green: 0.7333333333, blue: 0.3450980392, alpha: 1)
Pracuj dla mnieumieść ten kod w viewDidLoad kontrolera widoku, którego kolor chcesz zmienić
źródło
Możesz również ustawić odcień wybranego koloru paska obrazu za pomocą ścieżki klucza:
Mam nadzieję, że to ci pomoże !! Dzięki
źródło
XCode 8.2, iOS 10, Swift 3: teraz istnieje
unselectedItemTintColor
atrybut dlatabBar
:źródło
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
// Pasek niezaznaczony dla zmiany (iOS 10)
// I ta linia do zmiany koloru wszystkich zakładek
źródło
W jakiś sposób nie jesteśmy w stanie zmienić koloru wybranego elementu na pasku kart Odcień za pomocą samego scenariusza, dlatego dodałem poniższy kod w moim ViewDidLoad, mam nadzieję, że to pomoże.
źródło
Dodaj ten kod do funkcji delegata aplikacji -did_finish_launching_with_options
umieść RGB wymaganego koloru
źródło
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ć, żetintColor
atrybut ztabBar
reprezentuje 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.Jedynym minusem tego podejścia jest to, że obrazy przedmiotów muszą już mieć żądany kolor.
źródło
Najlepszym sposobem jest zmiana
Image Tint
w scenorysieźródło
Możesz podklasować
UITabBarController
i zastąpić go w serii ujęć. W swojejviewDidLoad
implementacji podklasy nazwij to:źródło
'UITabBar' does not have a member named 'setSelectedImageTintColor'
self.tabBar.setSelectedImageTintColor = UIColor.greenColor
tintColor
nie jestselectedImageTintColor
, btwselectedImageTintColor
jest przestarzałe w iOS 8.