5

我在Xcode 4.2 Build 4D199中創建了一個新的測試iOS5項目,並試圖設置UINavigationBar的外觀,但沒有任何反應。iOS 5 [UINavigationBar外觀] setBackgroundImage不能工作

我在viewDidLoad試圖代碼:

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

我可以讓它開始工作的唯一方法是設置在UINavigationBar實例的外觀。像:

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

這是怎麼回事?其他人遇到過這個問題嗎?

+0

得到了解決方案嗎? :) –

+0

得到了同樣的問題,可以設置色調和一切... –

回答

1

您是否仔細檢查過該Imagefile是否存在?

+0

那就是它與我,圖像文件不存在。 –

+0

我沒問過:)所以不能接受它 –

+0

Touché!沒有看到;) – thedanielhanke

1

您將需要提供forBarMetrics:爲此工作。

+0

他做到了這一點.. – Tieme

+0

但我...沒有! –

18

viewDidLoad是與導航控制器的導航欄的appearance代理搞混的錯誤的地方。在導航控制器創建之前做這種事情。在您的應用程序的代表applicationDidFinishLaunching是一個好地方。

+2

我有類似的問題。在第一次推動時,navigationBar沒有使用外觀代理設置屬性。但隨後的流行和推動,它獲得了它的顏色和圖像。 看起來像這個「外觀」thingy不能修改已經分配的對象,直到他們的第二次出現或如此! – NSIntegerMax

+0

正確,@AnImIsH - 我的猜測是,雖然某些東西是可見的,但它不會被外觀代理重新繪製。 – matt

+0

它確實把我的代碼放在applicationDidFinishLaunching中。但我不明白確切的原因或爲什麼它沒有在文檔中提到 – user1010819

相關問題