2011-12-26 92 views
2

我在嘗試更改UINavigationBar的「後退」按鈕自定義圖標時出現問題。爲了實現這樣的事情,我使用下面的代碼:iOS無法正確更改UIBarButtonItem圖像

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIBarButtonItem* leftBtn; 
    UIImage* botonVolverImg = [UIImage imageNamed:@"boton_volver.png"]; 

    leftBtn = self.navigationItem.leftBarButtonItem; 
    leftBtn.image = botonVolverImg; 
} 

不過,有觀點出現時,你會看到這一點:

a busy cat http://www.timotteo.com.ar/boton.png

(你可以看到,舊的按鍵仍出現在後面,加上我選擇的圖像看起來有點拉伸)

我一直在改變imageInsets財產,但似乎並沒有工作。我也一直在閱讀論壇,但無法找到確切的解決方案。

歡迎任何建議!

+0

如果你只是使用文本和字符串標題,你不能只在你的UIBarButtonItem上設置'title'屬性嗎?對我來說似乎沒有多少麻煩。 – 2011-12-26 17:04:33

+0

嗨@MichaelDautermann,這似乎是一個好主意,但我的客戶想要這個特定的圖像,所以我必須讓它工作 – 2011-12-26 17:59:02

回答

2

爲了補充馬克的回答,如果你的客戶需要你支持的iOS 4,您可以創建一個UIButton看起來正是你的客戶是怎麼想(即,只是圖像),然後使用UIBarButtoninitWithCustomView方法創建您自己的後退按鈕。然後,您可以使用該按鈕觸發popViewController或您需要的任何適當的操作。

+0

這正是我所尋找的。 – 2011-12-26 18:43:42

3

image屬性UIBarButtonItem不對應於背景圖片,只有圖片提供了額外的上下文。如果你的目標是5.0+,那麼最好的辦法就是使用-setBackButtonBackgroundImage:forState:barMetrics:來設置條形按鈕項目的背景。

+2

在這種情況下,因爲它特別是我們正在討論的'後退'按鈕,'setBackButtonBackgroundImage:forState:barMetrics: '可能是更好的選擇。 ' – lxt 2011-12-26 18:11:21

+0

你當然是對的。編輯。 – 2011-12-26 18:12:10

+0

這似乎是一個很酷的解決方案,但遺憾的是我必須使用的xcode/ios版本(客戶的要求)似乎不支持這種方法(我正在討論setBackButtonBackgroundImage) – 2011-12-26 18:44:42