Korzystam z widoku próbnika, aby umożliwić użytkownikowi wybór motywu kolorów dla całej aplikacji.
Planuję zmienić kolor paska nawigacji, tła i ewentualnie paska kart (jeśli to możliwe).
Badam, jak to zrobić, ale nie mogę znaleźć żadnych szybkich przykładów. Czy ktoś mógłby podać przykład kodu, którego musiałbym użyć, aby zmienić kolor paska nawigacji i kolor tekstu paska nawigacji?
Widok selektora jest skonfigurowany, szukam tylko kodu do zmiany kolorów interfejsu użytkownika.
źródło
Oto kilka bardzo podstawowych dostosowań wyglądu, które można zastosować w całej aplikacji:
Więcej informacji o
UIAppearance
API w Swift można przeczytać tutaj: https://developer.apple.com/documentation/uikit/uiappearanceźródło
Zaktualizowano dla Swift 3, 4, 4.2, 5+
Szybki 4
Swift 4.2, 5+
Można również sprawdzić tutaj: https://github.com/hasnine/iOSUtilitiesSource
źródło
Po prostu wklej ten wiersz
didFinishLaunchingWithOptions
do swojego kodu.źródło
W ramach AppDelegate globalnie zmienił format paska nawigacyjnego i usuwa dolną linię / granicę (która jest problemem dla większości osób), aby dać ci to, czego myślę, że ty i inni szukasz:
Następnie możesz ustawić plik Constants.swift , a zawarta jest struktura Style z kolorami i czcionkami itp. Następnie możesz dodać tableView / pickerView do dowolnego ViewController i użyć tablicy „availableThemes”, aby umożliwić użytkownikowi zmianę themeColor.
Piękną rzeczą jest to, że możesz użyć jednego odwołania w całej aplikacji dla każdego koloru i zaktualizuje się ono na podstawie wybranego przez użytkownika „Motywu”, a bez niego domyślnie będzie to theme1 ():
źródło
Aby to zrobić w scenorysie (Inspektor konstruktora interfejsów)
Za pomocą
IBDesignable
możemy dodać więcej opcji do Inspektora konstruktora interfejsówUINavigationController
i dostosować je w serii ujęć. Najpierw dodaj następujący kod do swojego projektu.Następnie po prostu ustaw atrybuty kontrolera nawigacji w serii ujęć.
To podejście można również zastosować do zarządzania kolorem tekstu paska nawigacyjnego z serii ujęć:
źródło
Swift 4:
Doskonale działający kod do zmiany wyglądu paska nawigacji na poziomie aplikacji.
Happy Coding!
źródło
pracował dla mnie
źródło
SWIFT 4 - Płynne przejście (najlepsze rozwiązanie):
Jeśli cofasz się z kontrolera nawigacyjnego i musisz ustawić inny kolor na kontrolerze nawigacyjnym, z którego chcesz wypchnąć
zamiast umieszczać go w widoku WillAppear, aby przejście było czystsze.
SWIFT 4.2
źródło
W Swift 4
Możesz zmienić kolor paska nawigacji. Po prostu użyj tego fragmentu kodu w
viewDidLoad()
Kolor paska nawigacji
Kolor tekstu paska nawigacji
W przypadku paska nawigacji dużego tytułu w systemie iOS 11 należy użyć
largeTitleTextAttributes
właściwościźródło
Ta
appearance()
funkcja nie zawsze działa dla mnie. Wolę więc utworzyć obiekt NC i zmienić jego atrybuty.Działa to również, jeśli chcesz dodać obraz zamiast samego tekstu
źródło
Użyj interfejsu API wyglądu i koloru barTintColor.
źródło
iOS 8 (szybki)
źródło
Jeśli masz spersonalizowany kontroler nawigacji, możesz użyć powyższego fragmentu kodu. Więc w moim przypadku użyłem następujących elementów kodu.
Swift 3.0, wersja XCode 8.1
Tekst paska nawigacji:
To bardzo pomocne rozmowy.
źródło
Aktualizacja Swift 4, iOS 12 i Xcode 10
Wystarczy umieścić jedną linię w środku
viewDidLoad()
źródło
W Swift 2
Aby zmienić kolor na pasku nawigacyjnym,
Aby zmienić kolor na pasku nawigacji elementów,
lub
źródło
Szybki 3
Spowoduje to ustawienie koloru paska nawigacji jak kolor paska Facebooka :)
źródło
Xcode 9 kompatybilny z Swift 3 i Swift 4
Lepsze rozwiązanie, aby stworzyć klasę dla popularnych pasków nawigacyjnych
Mam 5 kontrolerów, a każdy tytuł kontrolera zmienia się na pomarańczowy. Ponieważ każdy kontroler ma 5 kontrolerów nawigacyjnych, musiałem zmienić każdy kolor z poziomu inspektora lub kodu.
Stworzyłem więc klasę zamiast zmieniać każdy pasek nawigacji z kodu, po prostu przypisałem tę klasę i działała na wszystkich 5 kontrolerach Możliwość ponownego użycia kodu. Musisz tylko przypisać tę klasę do każdego kontrolera i tyle.
źródło
iOS 10 Swift 3.0
Jeśli nie masz nic przeciwko używaniu szybkich ram, to my, UINeraida, zmieniamy tło nawigacji jako
UIColor
lubHexColor
lubUIImage
i programowo zmieniamy tekst przycisku nawigacyjnego wstecz, zmieniamy kompletny kolor tekstu forground.Dla
UINavigationBar
źródło
Szybki 3
Prosta jedna wkładka, w której możesz użyć
ViewDidLoad()
źródło
Ta wersja usuwa również linię cienia 1px pod paskiem nawigacji:
Swift 5: Umieść to w swojej aplikacjiDelegate didFinishLaunchingWithOptions
źródło
musiałem zrobić
w przeciwnym razie kolor tła nie zmieni się
źródło
Najpierw ustaw właściwość isTranslucent parametru navigationBar na false, aby uzyskać żądany kolor. Następnie zmień kolor paska nawigacji w następujący sposób:
źródło
Upewnij się, że ustawiłeś stan przycisku na .normal
PS iOS 12, Xcode 10.1
źródło
topItem
rozwiązania. Frustruje to liczbę zmian, które Apple wciąż wprowadza w sposobie stosowania stylów w nawigacji.wystarczy wywołać to rozszerzenie i przekazać kolor, który automatycznie zmieni kolor paska nawigacyjnego
w widoku nie załadowano lub w widoku pojawi się połączenie
self.navigationController? .setNavigationBarColor (kolor: <# T ## UIColor #>)
źródło
źródło
Piszę to dla tych, którzy nadal mają problemy z rozwiązaniami tutaj.
Używam Xcode w wersji 11.4 (11E146). Dla mnie działa:
ALE !, jeśli ustawisz barTintColor w serii ujęć na wartość inną niż „domyślna”, te 2 wiersze kodu nie przyniosą efektu.
Bądź więc ostrożny i przywróć domyślny barTintColor w Storyboard. Oh Apple ...
źródło
Dodaj te wiersze do AppDelegate wewnątrz funkcji didFinishLaunchingWithOptions:
ta linia służy do tła paska nawigacji.
ta linia jest, jeśli nie jest przezroczysty na false, pokaże biały kolor podczas nawigacji.
ten wiersz dotyczy tekstów i ikon na pasku nawigacyjnym
linia ta pozwala nam sprowadzić wszystko do paska nawigacji.
źródło