2013-04-27 43 views
1

我用下面的代碼在我的appdelegate:UINavigationBar的外觀和Facebook張錯誤

UINavigationBar *navigationBar = [UINavigationBar appearance]; 
[navigationBar setBackgroundImage:[[UIImage imageNamed:@"top_bar"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forBarMetrics:UIBarMetricsDefault]; 
[navigationBar setBackgroundImage:[[UIImage imageNamed:@"top_bar_scape"] stretchableImageWithLeftCapWidth:5 topCapHeight:5] forBarMetrics:UIBarMetricsLandscapePhone]; 

一切工作正常,但我有一個奇怪的錯誤,當我打開iOS6的Facebook的共享張,並打開特定受衆列表(或專輯列表不重要):導航欄使用我的top_bar-Image呈現。 見下面的屏幕:

Normal without my appearance changes < - 正常沒有我的出現改變 Buggy with my appearance changes < - 越野車與我的外表變化

任何想法如何避免這種錯誤嗎? 謝謝! :)

回答

2

外觀上的變化 - 這意味着他們無處不在。這可能非常有用或非常非常煩人。你可以嘗試解決這個問題

一種方法是要麼使用

[[UINavigationBar appearanceWhenContainedIn:... 

,或者你可以把導航欄的自定義子類,並只適用於它的外觀變化:

[[MYNavigationBar appearance] setSomething:aThing]; 
+0

非常感謝您的回答!我解決了這個問題: [UINavigationBar appearanceWhenContainedIn:[UINavigationController class],nil]; – CrEaK 2013-04-27 21:04:31

+0

不客氣! – Undo 2013-04-27 21:05:16

2

外觀設置適用於定義設置後顯示的所有控件。所以在你的情況下,每個導航欄將使用你的背景圖片。 通過更改外觀設置(黑色),可以解決問題,然後再將視圖控制器應該具有黑色導航欄並將其設置回來,然後再用黑色導航器彈出視圖控制器。 我的項目有類似的問題,我上面提到的解決了這個問題。

PS對不起,任何拼寫錯誤和缺乏源代碼,我是在路上,我從我的手機打字;)使用UIAppearance方法是全球製造

+0

謝謝,但在我的情況下,這是一個waaay很多工作。我修正了上面提到的:) – CrEaK 2013-04-27 21:05:49