2012-07-04 9 views
6

Jestem w trakcie włączania funkcji UIAppanceance iOS 5, aby nadać mojej uniwersalnej aplikacji unikalny motyw. Obecnie mam wdrożony jakiś kod w moim App Delegata dać app niestandardowych pasków nawigacyjnych:UIAppearance Usuń niestandardowe tło NavBar dla UIPopoverController

UIImage *navBarImage = [[UIImage imageNamed:@"navigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)]; 
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; 

Działa to dobrze i zmienia wszystkie paski nawigacyjne z prostym stylu Apple na jasnym gradientu. Jednak problem, który mam, polega na tym, że nadpisuje jakiś styl, którego też nie chcę. Mój szczególny problem polega na tym, że przesłonił on tło paska nawigacji w UIPopoverControllerze iPada, tworząc nieprzyjemne wrażenia użytkownika. Proszę, powiedz mi, jak to naprawić.

Edytuj: Zwróć uwagę, że jest to aplikacja uniwersalna i otwieram selektor zdjęć za pomocą kontrolera UIPopover na iPadzie i modalnego widoku na urządzeniu iPhone/iPod. Chcę tylko usunąć niestandardowe tło dla navBar na popover na iPadzie, a nie na widoku modalnym.

Jak to obecnie wygląda następująco: enter image description here

Jak chcę wyglądać: enter image description here

Z góry dzięki za pomoc, Guvvy

Odpowiedz

14

Spróbuj użyć metody +appearanceWhenContainedIn: usunąć dostosowywanie obrazu tła z pasków nawigacyjnych, gdy są one zawarte w kontrolerach typu popover. Coś takiego:

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

To nie wynika z dokumentacji, czy ustawienie bar nawigacyjnego obraz tła do nil przywraca domyślny wygląd, jeśli to nie zadziała, to może trzeba wziąć odwrotne podejście i zapewnić lista kontrolerów widoku kontenerów non-popover, których używasz do +appearanceWhenContainedIn:.

+2

Ustawienie "nil" wykonało zadanie. Dziękuję bardzo za Twoją pomoc! Nie mogę uwierzyć, że sam tego nie wymyśliłem. – Gavy

+0

ta sama sztuczka działa również dla przycisków, na przykład: '[[Wygląd UIBarButtonItemWhenContainedIn: [klasa UINavigationBar], [klasa UIPopoverController], nil] setBackgroundImage: nil forState: UIControlStateNormal barMetrics: UIBarMetricsDefault];' –

Powiązane problemy