5

Stworzyłem nowy testowy projekt iOS5 w Xcode 4.2 Build 4D199 i próbowałem ustawić wygląd UINavigationBar zgodnie z powyższym opisem, ale nic się nie dzieje.iOS 5 [UINavigationBar appearance] setBackgroundImage nie działa

Kod Próbowałem w viewDidLoad:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar-iphone.png"] forBarMetrics:UIBarMetricsDefault]; 

Jedynym sposobem mogę zmusić go do pracy jest, aby ustawić wygląd na wystąpienie UINavigationBar. Na przykład:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-iphone.png"] forBarMetrics:UIBarMetricsDefault]; 

Co się dzieje? Czy ktoś inny miał ten problem?

+0

Masz już rozwiązanie? :) –

+0

Mam ten sam problem, mogę ustawić odcień i wszystko ... –

Odpowiedz

1

Czy dwukrotnie sprawdziłeś, czy plik obrazu istnieje?

+0

To, co było ze mną, plik obrazu nie istnieje. –

+0

Nie zadałem pytania :) nie można go zaakceptować –

+0

Touché! tego nie widziałem;) – thedanielhanke

1

Będziesz musiał dostarczyćBarMetrics: aby to działało.

+0

zrobił to .. – Tieme

+0

ale ... ja nie zrobiłem! –

18

viewDidLoad jest niewłaściwym miejscem do komunikowania się z serwerem proxy nawigatora kontrolera nawigacji appearance. Rób takie rzeczy, zanim jeszcze zostanie utworzony kontroler nawigacyjny. W Twojej aplikacji delegata to applicationDidFinishLaunching to dobre miejsce.

+2

Miałem podobny problem. Przy pierwszym naciśnięciu pasek nawigacyjny nie miał właściwości ustawionych za pomocą proxy wyglądu. Ale po kolejnym pop & push ponownie dostał kolory i obrazy. Wygląda na to, że ten "wygląd" nie może modyfikować już przydzielonych obiektów do czasu ich drugiego pojawienia się! – NSIntegerMax

+0

Prawidłowe, @AnImIsH - Domyślam się, że gdy coś jest widoczne, nie zostanie przerysowane przez serwer proxy wyglądu. – matt

+0

Umieściłem mój kod w aplikacjiDidFinishLaunching. Nie rozumiem jednak dokładnego powodu ani przyczyny, o której nie wspomniano w dokumentacji – user1010819

Powiązane problemy