Wygląda na to, że tytuł tytułu paska nawigacji iOS jest domyślnie biały. Czy istnieje sposób, aby zmienić go na inny kolor?
Zdaję sobie sprawę z navigationItem.titleView
podejścia wykorzystującego obraz. Ponieważ moje umiejętności projektowania są ograniczone i nie udało mi się uzyskać standardowego połysku, wolę zmienić kolor tekstu.
Wszelkie informacje będą mile widziane.
ios
uinavigationbar
navigationitem
Callum
źródło
źródło
Odpowiedzi:
Nowoczesne podejście
Nowoczesny sposób dla całego kontrolera nawigacyjnego… zrób to raz, gdy załadowany jest widok główny kontrolera nawigacyjnego.
Nie wydaje się to jednak mieć wpływu na kolejne widoki.
Klasyczne podejście
Stary sposób na kontroler widoku (te stałe są dla iOS 6, ale jeśli chcesz to zrobić dla kontrolera widoku na wygląd iOS 7, będziesz chciał tego samego podejścia, ale z różnymi stałymi):
Trzeba użyć
UILabel
jakotitleView
znavigationItem
.Etykieta powinna:
label.backgroundColor = [UIColor clearColor]
).label.font = [UIFont boldSystemFontOfSize: 20.0f]
).label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]
).label.textAlignment = NSTextAlignmentCenter
(UITextAlignmentCenter
dla starszych zestawów SDK).Ustaw kolor tekstu etykiety na dowolny niestandardowy kolor. Potrzebujesz koloru, który nie powoduje wtopienia się tekstu w cień, co byłoby trudne do odczytania.
Opracowałem to metodą prób i błędów, ale wartości, które wymyśliłem, są ostatecznie zbyt proste, aby nie były tym, co wybrał Apple. :)
Jeśli chcesz to zweryfikować, upuść ten kod
initWithNibName:bundle:
w próbce NavBarPageThreeViewController.m
firmy Apple . Spowoduje to zastąpienie tekstu żółtą etykietą. Powinno to być nie do odróżnienia od oryginalnego kodu Apple'a, z wyjątkiem koloru.Edycja: Przeczytaj także odpowiedź Erika B. Mój kod pokazuje efekt, ale jego kod oferuje prostszy sposób na umieszczenie go w istniejącym kontrolerze widoku.
źródło
sizeWithFont:
, magicznie przejmie ona zachowanie automatycznego wyrównywania standardowej etykiety.Wiem, że jest to dość stary wątek, ale myślę, że warto byłoby wiedzieć dla nowych użytkowników, że iOS 5 wprowadza nową właściwość do ustalania właściwości tytułu.
Możesz użyć paska narzędzi UINavigation
setTitleTextAttributes
do ustawienia czcionki, koloru, przesunięcia i koloru cienia.Ponadto możesz ustawić te same domyślne atrybuty tekstu tytułu UINavigationBar dla wszystkich
UINavigationBars
aplikacji.Na przykład tak:
źródło
W iOS 5 możesz zmienić kolor tytułu paska nawigacji w następujący sposób:
źródło
UITextAttributeTextColor
doNSForegroundColorAttributeName
. Działa jak marzenie!self.navigationController.navigationBar.tintColor
nie działało dla mnie. Tak się stało.Na podstawie odpowiedzi Stevena Fishera napisałem ten fragment kodu:
Zaletą tego kodu, oprócz poprawnego obchodzenia się z ramką, jest to, że jeśli zmienisz tytuł kontrolera, niestandardowy widok tytułu również zostanie zaktualizowany. Nie ma potrzeby ręcznej aktualizacji.
Kolejną dużą zaletą jest to, że bardzo łatwo można włączyć niestandardowy kolor tytułu. Wszystko, co musisz zrobić, to dodać tę metodę do kontrolera.
źródło
Większość powyższych sugestii jest już nieaktualna, w przypadku systemu iOS 7 -
Sprawdź także NSAttributString.h pod kątem różnych właściwości tekstu, które można ustawić.
źródło
W iOS 7 i 8 możesz zmienić kolor tytułu, powiedzmy zielony
źródło
self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Aby pytanie było aktualne, dodam rozwiązanie Alex RR , ale w Swift :
Które wyniki:
źródło
Metoda 1 , ustaw ją w IB:
Metoda 2 , jeden wiersz kodu:
źródło
titleTextAttributes
tylko zRozwiązanie firmy tewha działa dobrze, jeśli próbujesz zmienić kolor na stronie, ale chcę mieć możliwość zmiany koloru na każdej stronie. Wprowadziłem małe modyfikacje, aby działały na wszystkich stronach
UINavigationController
NavigationDelegate.h
NavigationDelegate.m
źródło
Począwszy od iOS 5, musimy ustawić kolor tekstu czcionki i czcionkę paska nawigacyjnego za pomocą TitleTextAttribute Dictionary (predefiniowany słownik w odwołaniu do klasy kontrolera UInavigation).
źródło
Szybka wersja
Odkryłem, że większość z was przedstawiła odpowiedzi na wersję Objective_C
Chciałbym zaimplementować tę funkcję, używając Swift dla każdego, kto jej potrzebuje.
W ViewDidload
1.Aby kolor tła paska nawigacyjnego stał się kolorowy (na przykład NIEBIESKI)
2. Aby tło paska nawigacyjnego zmieniło się w Obraz (na przykład: ABC.png)
3. Aby zmienić tytuł paska nawigacji (na przykład: [Czcionka: Futura, 10] [Kolor: Czerwony])
Mam nadzieję, że mogę pomóc!: D
źródło
Użyj poniższego kodu w dowolnej metodzie viewDidLoad lub viewWillAppear kontrolera widoku.
źródło
Krótkie i słodkie.
źródło
To jest moje rozwiązanie oparte na Stevensie
Jedyną prawdziwą różnicą jest to, że wprowadzam pewne zmiany w dostosowywaniu pozycji, jeśli w zależności od długości tekstu wydaje się być podobny do sposobu, w jaki robi to jabłko
Możesz dostosować wartość 10 w zależności od rozmiaru czcionki
źródło
Wystąpił problem z moimi przyciskami nawigacyjnymi wyrzucającymi tekst poza środek (gdy masz tylko jeden przycisk). Aby to naprawić, właśnie zmieniłem rozmiar ramki tak:
źródło
Dostosowałem obraz tła paska nawigacji i element lewego przycisku, a szary tytuł nie pasuje do tła. Następnie używam:
zmienić kolor odcienia na szary. A tytuł jest teraz biały! To jest to czego chce.
Mam nadzieję również pomóc :)
źródło
Zalecane jest ustawienie self.title, ponieważ jest on używany podczas przesuwania dziecięcych pasków nawigacyjnych lub pokazywania tytułu na paskach.
źródło
To dość stary wątek, ale myślę o udzieleniu odpowiedzi na ustawienie koloru, rozmiaru i pozycji pionowej tytułu paska nawigacji dla systemu iOS 7 i nowszych
Dla koloru i rozmiaru
Do pozycji pionowej
Ustaw tytuł i przypisz słownik atrybutów
źródło
To działa dla mnie w Swift:
źródło
navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Wersja Swift 4 i 4.2:
źródło
źródło
aby ustawić rozmiar czcionki tytułu użyłem następujących warunków .. może być pomocny dla każdego
źródło
Aktualizacja posta Alexa RR przy użyciu nowych atrybutów tekstowych iOS 7 i nowoczesnego celu c w celu zmniejszenia hałasu:
źródło
Uważam, że właściwym sposobem ustawienia koloru
UINavigationBar
jest:Powyższy kod jest napisany w podklasie
UINavigationBar
, oczywiście działa również bez tej podklasy.źródło
[UINavigationBar appearance]
i ustawić atrybuty tekstu tytułowego (biorąc pod uwagę podstępność związaną z podklasowaniemUINavigationBar
, preferowanym rozwiązaniem).Użyj tego do obsługi Orientacji
źródło
To jedna z tych rzeczy, których brakuje. Najlepszym rozwiązaniem jest utworzenie własnego paska nawigacji, dodanie pola tekstowego i manipulowanie w ten sposób kolorem.
źródło
Po napotkaniu tego samego problemu (jak inni) na etykiecie, która porusza się po wstawieniu przycisku w pasku nawigacyjnym (w moim przypadku mam pokrętło, które zastępuję przyciskiem po załadowaniu daty), powyższe rozwiązania nie działały dla mnie, więc oto, co działało i utrzymywało etykietę w tym samym miejscu przez cały czas:
źródło
Powinieneś wywołać [label sizeToFit]; po ustawieniu tekstu, aby zapobiec dziwnym przesunięciom, gdy etykieta jest automatycznie zmieniana w widoku tytułowym, gdy inne przyciski zajmują pasek nawigacyjny.
źródło
Może korzystać z tej metody w pliku appdelegate i może być używany w każdym widoku
źródło
titleTextAttributes Wyświetl atrybuty tekstu tytułu paska.
@property (nonatomic, kopia) NSDictionary * titleTextAttributes Dyskusja Możesz określić czcionkę, kolor tekstu, kolor cienia tekstu i przesunięcie cienia tekstu dla tytułu w słowniku atrybutów tekstu, używając kluczy atrybutów tekstu opisanych w NSString UIKit Additions Reference.
Dostępność Dostępne w iOS 5.0 i nowszych. Zadeklarowano w UINavigationBar.h
źródło