2012-07-04 36 views
6

我在合併的iOS 5的UIAppearance功能給我的通用的應用程序的唯一主題的過程中刪除自定義的NavBar背景。目前,我在我的應用程序委託執行一些代碼來給應用程序的自定義導航欄:UIAppearance爲UIPopoverController

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

這種運作良好,並改變從蘋果公司的普通樣式的所有導航欄,以明亮的梯度。但是,我遇到的問題是它壓倒了一些我不想要的風格。我的具體問題是,它覆蓋在iPad的UIPopoverController導航欄的背景,創造了一個醜陋的用戶體驗。請告訴我如何解決它。

編輯:請注意,這是一個普遍的應用程序,並通過我在iPad上UIPopoverController和在iPhone/iPod的一個模式視圖中打開圖像選擇器。我只想刪除iPad彈出窗口上navBar的自定義背景,而不是模式視圖。

如何目前,它看起來像: enter image description here

我怎麼想它看起來像: enter image description here

預先感謝您的幫助, Guvvy

回答

14

嘗試使用+appearanceWhenContainedIn:方法去除當它們被包含在彈出窗口控制器中時,從導航欄進行背景圖像定製。事情是這樣的:

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

這不是從文檔清楚是否一個導航欄的背景圖片設置爲nil恢復其默認外觀,如果不工作,你可能需要採取相反的做法,並提供您使用的是+appearanceWhenContainedIn:非酥料餅的容器視圖控制器的列表。

+2

將其設置爲'nil'做的工作。非常感謝你的幫助!我不敢相信我自己沒有想到。 – Gavy

+0

同一特技適用於按鈕太,例如: '[[的UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar的類],[UIPopoverController類],零]了setBackgroundImage:無forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];' –