2012-08-06 145 views
0

我正在嘗試使用自定義圖像爲我的導航欄創建按鈕。當我運行下面的代碼時,該按鈕就像它應該顯示的那樣,除了你可以在它後面看到另一個更寬的按鈕,伸出兩側。我如何擺脫其他按鈕?自定義按鈕initWithImage在自定義圖像後面顯示默認按鈕

UIBarButtonItem *emailButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"emailBut"] 
                   style:UIBarButtonSystemItemCompose 
                   target:self 
                   action:@selector(emailSheet)]; 
self.navigationItem.rightBarButtonItem = emailButton; 

回答

1

好吧,出於某種原因initWithImage只把圖像中的默認按鈕的中心。解決辦法是按照iBlue的建議對initWithCustomView進行修復。

另一個要注意的是,barBackButton不允許自定義視圖,所以我不得不作出這樣的一個leftButton而不是後退按鈕,我自己回去的方法。我希望蘋果將來能夠更輕鬆地做到這一點。

1

嗯... UIBarButtonSystemItemCompose是一個系統圖標,所以我想你可能會覆蓋你的圖標。您應該使用UIBarButtonItemStylePlain(或其他樣式)作爲您的style:參數。

編輯:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(...)]; 
[button setBackgroundImage:someImage]; 
[button addTarget:self action:@selector(something:) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
[self.navigationItem setRightBarButtonItem:barButtonItem]; 
+0

我試着將它改爲純色和邊框,圖像後面的按鈕仍然存在,大小相同,只是顏色不同。 – Mirror318 2012-08-07 02:43:06

+0

如果你指的是這個邊框,你應該使用'UIButton'而不是'UIBarButtonItem'。 – aforaudrey 2012-08-07 03:17:41