Próbuję dostosować mój czcionki UINavigationBar, stosując następujący kod dla iOS 5 w moim app delegata application:didFinishLaunchingWithOptions
:Dostosuj UINavigationBar czcionki
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)])
{
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], UITextAttributeTextColor,
[UIColor blackColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(1, 0)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:kDefaultFont size:0.0], UITextAttributeFont,
nil]];
}
To działa dobrze i pasek nawigacyjny jest renderowane za pomocą mojego czcionki. Wspaniały.
The references Znalazłem sugerowanie, że możesz użyć rozmiaru czcionki równego zero i zmieni on rozmiar czcionki, aby pasował do paska nawigacji (używając nieco mniejszej czcionki dla krótszego paska nawigacyjnego dla układu krajobrazu). I wybiera rozmiar czcionki, który ładnie pasuje do wysokości paska nawigacji. Wygląda jednak na to, że jeśli przejdziesz z widoku pionowego do poziomego iz powrotem, szerokość etykiety tytułu paska nawigacyjnego zostanie zerwana, więc to, co pojawia się jako tytuł, na przykład "Długi pasek tytułu", wygląda dobrze po pierwszym wyświetleniu w orientacji pionowej wygląda dobrze, gdy oglądasz go w orientacji poziomej (z odpowiednio mniejszą czcionką), ale kiedy wracam do portretu, czcionka poprawnie powraca do większej czcionki, ale sam tekst tytułu jest obcięty, stając się "Długi .. ", mimo że jest dużo miejsca na pełny tytuł. Czy ktoś inny widział to zachowanie, gdy używa czcionki o rozmiarze 0,0?
Oczywiście, mogę tylko określić rzeczywisty rozmiar czcionki (w którym to przypadku nie widzę tego zachowania obciętego), ale potem ręcznie ustalam, jaki rozmiar użyć. Co gorsza, rozmiar czcionki jest taki sam dla krajobrazu i portretu, więc używam teraz rozmiaru czcionki pasującego do krótszego pejzażu nawigacyjnego, a tytuł jest mniejszy niż na wyższym pionowym pasku nawigacyjnym.
Czy ktoś z personelu miał doświadczenie w używaniu setTitleTextAttributes
do zmiany czcionki [UINavigationBar appearance]
w taki sposób, że rozmiar czcionki zmienia się między portretem a krajobrazem, ale nie ma tego obcięcia tytułu po powrocie do portretu po przejściu do pejzażu? Mam zamiar realizować różne obejścia kludgy, ale jeśli masz jakieś doświadczenie w tym problemie, daj mi znać.
Aktualizacja:
W procesie składania ten błąd do Apple, postanowiłem pokazać, jak odtworzyć problem:
Utwórz nowy iOS Master-Detail Zastosowanie w Xcode 4.3. 2.
Umieść powyższy kod
setTitleTextAttributes
w aplikacji delegata użytkownikaapplication:didFinishLaunchingWithOptions
(użyłem czcionki @ "GillSans").Idź do MasterViewController i dodać wiersz, który mówi
self.title = @"Long Title";
Komentarz z oznaczeniem
UIBarButtonItem *addButton
.Uruchom program. Zauważ, że tytuł poprawnie mówi "Długi tytuł". Obróć do orientacji poziomej. Nadal wygląda dobrze. Obróć z powrotem do portretu, a tytuł mówi "Długo ...", chociaż jest dużo miejsca.
Co ciekawe, po przywróceniu kodu
UIBarButtonItem *addButton
tytuł działa tak, jak powinien. Ale jeśli albo wyeliminujesz element UIBarButton, albo zastąpisz go przyciskiem, który używainitWithTitle
, a nieinitWithBarButtonSystemItem
, pojawia się problem z tytułem paska nawigacji po obróceniu z portretu na krajobraz, a następnie z powrotem do portretu.
Miałem problem polegający na tym, że moje niestandardowe tytuły paska nawigacyjnego czcionek były "przedwcześnie obcięte" przy pierwszym wyświetleniu, ale później były w porządku. Wydaje się, że to 6-ismowy system iOS. W każdym razie odkrycie, że mogę ustawić rozmiar czcionki na 0.0, rozwiązało problem. Dzięki! – mharper
Co ciekawe na symulatorze iOS5.1 przy użyciu tej metody tytuł jest obcinany * podczas * przejścia pushModalViewController, ale po przejściu jest wyświetlany poprawnie. Na symulatorze iOS 6.0 działa zgodnie z oczekiwaniami. –