2012-03-08 74 views
1

我試圖在我的程序啓動時調用的方法中設置tintColorUIBarButtonItem。我用故事板設置了我的所有觀點。然後,我使用新的iOS5準則來定製視圖的外觀,以使用外觀代理。我已經通過執行以下操作自定義導航欄的背景:爲什麼這個酒吧按鈕黑色和不清楚?

- (void)customizeAppearance 
{ 
    UIImage *leatherTexture = [[UIImage imageNamed:@"[email protected]"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

    [[UINavigationBar appearance] setBackgroundImage:leatherTexture 
             forBarMetrics:UIBarMetricsDefault]; 
    [[UINavigationBar appearance] setBackgroundImage:leatherTexture 
             forBarMetrics:UIBarMetricsLandscapePhone]; 

    [[UIBarButtonItem appearance] setTintColor:[UIColor clearColor]]; 
} 

我希望通過設置UIBarButtonItemtintColor清除,可以讓我輕鬆地使用默認的按鈕樣式,同時具有自定義背景紋理。但是,將tintColor設置爲清除只是將按鈕變爲黑色而不是透明或清除。任何想法我做錯了什麼?有沒有辦法創建一個清晰的按鈕,而不必使用按鈕的自定義圖像?見下圖:

bar

+0

看看http://stackoverflow.com/questions/9138490/make-a-cleartransluscent-uibarbutttonitem-ios-5 – 2012-03-08 07:15:02

+0

阿尼爾 - 對不起,我應該提到我使用故事板來設置所有的意見。我會將其添加到帖子中。在任何情況下,提問者都會和我一樣感到沮喪。當然,這可以通過使用自定義清除按鈕圖像來完成,但如果可以在不需要定製圖像的情況下完成,則會更好。所以我想這真的是我的問題 - 可以使用故事板而不使用自定義圖像嗎? – 2012-03-08 07:24:36

+0

有色控件不會繼承着色顏色的Alpha值。 – 2012-03-08 07:27:55

回答

1

你不能做到這一點的方式(因爲IMO的UIBarButtonItem默認背景是黑色的,新的色調顏色過分層就可以了。)。

但是,您可以使用UIButton(帶背景)自定義您的UIBarButtonItem作爲customViewUIBarButtonItem

或者,如果你的目標iOS 5中不僅可以使用棕色色調的顏色(這將是平坦的,並不會顯示背景圖片)

+0

Adil - 這可以工作,我已經看到類似的解決方案,但它不是理想的,因爲你正在爲使用一個視圖控制器的每個視圖控制器創建一個自定義的UIBarButtonItem。外觀代理背後的想法是,你可以定義一個樣式並將其應用於所有視圖控制器。你知道一種方法來做你使用外觀代理的建議嗎? – 2012-03-08 09:06:15

+0

你可以看看[這篇文章](http://stackoverflow.com/a/3095534/593709)和[這篇文章以及](http://stackoverflow.com/q/3081203/593709) – 2012-03-08 09:21:22

+1

只是爲了添加到這個答案,如果其他人讀了這個在未來:玩過各種不同的方法後,Adil強調的方法是絕對正確的。不幸的是,要有一個「清除按鈕」來顯示背後的背景,你需要使用自定義圖像和Adil所說的方法。謝謝阿迪爾! – 2012-03-26 07:37:28

1

剛剛發現在Xcode 4.5你可以拖動一個UIButton到UIBarButton在故事板中。 UIButton可以完全自定義。