2013-02-15 88 views
0

我有一段糟糕的時間,試圖爲我的UIBarButtonItems使用圖像而不是標題。我的理解是,設置UIBarButtonItem的圖像會自動將圖像縮放爲UIBarButtonItem的正確大小。這是有道理的,因爲似乎沒有任何方法來調整圖像大小(不能設置imageView,或添加子視圖或其他任何東西)。然而,當我使用相同的尺寸(24×24)的兩個不同的圖像,我得到不同的結果:無法以編程方式向UIBarButtonItem添加正確大小的圖像

myAddButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)]; 
self.navigationItem.rightBarButtonItem = myAddButton; 

myLeftButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"gear.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)]; 
self.navigationItem.leftBarButtonItem = myLeftButton; 

導致以下:

enter image description here

再次,gear.png和加。 png是相同的大小,24x24。我已經在Photoshop中確認了這一點。

現在如果我帶的代碼完全相同的線路,只是更換齒輪加:

myAddButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)]; 
self.navigationItem.rightBarButtonItem = myAddButton; 

myLeftButton = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)]; 
self.navigationItem.leftBarButtonItem = myLeftButton; 

我得到這個:

enter image description here

的顏色是由於一個是差異啓用和其他不是。

我只是讓他們UIButtons,以便我可以使用imageViews並手動設置此自己,除了我喜歡使用UIBarButtonItem給我的背景,我不想在Photoshop中重新創建它。

關於這裏發生了什麼以及我如何解決它的任何想法?

在此先感謝。

編輯:

原來,因爲我需要清除我的建立和刪除應用程序關閉模擬器,這個問題被引起,因爲它是從我此前使用48x48像素的圖像拉動。

+0

嘗試首先創建UIImage並檢查圖像的大小。 – Dave 2013-02-15 08:40:25

+0

使用'UIBarButtonSystemItem' – 2013-02-15 08:41:55

回答

2

確保您有正確的圖像在您的項目。而且,是的,有時候嘗試清理你的項目。從設備/模擬器中刪除應用程序也可能會有所幫助。

+0

嘆息,結果我所要做的就是從模擬器中刪除應用程序並清理構建。我有三個小時的生活,我永遠不會回來。但是,謝謝! – CowGoes 2013-02-15 08:52:43

1

您傳遞不正確的樣式您正在使用,以創建按鈕的方法:

這裏:

[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"plus.png"] style:UIBarButtonSystemItemAdd target:self action:@selector(settingsButtonTapped)]; 

您使用initWithImage:style:target:action但你要分配的UIBarButtonSystemItemAdd風格值不是一個的允許值。該方法的文檔說明它必須是UIBarButtonItemStyle之一,其定義如下。嘗試使用其中的一種方法來查看是否可以獲得您之後的效果。

typedef enum { 
    UIBarButtonItemStylePlain, 
    UIBarButtonItemStyleBordered, 
    UIBarButtonItemStyleDone, 
} UIBarButtonItemStyle; 
0

這裏就是你可以嘗試

UIButton *leftButton = [ UIButton buttonWithType:UIButtonTypeCustom];  
     [leftButton setFrame:CGRectMake(0,0,44,44)]; // set the frame according to the image size 
     [leftButton setBackgroundImage:[UIImage imageNamed:@"plus.png"] forState:UIControlStateNormal]; 
     [leftButton addTarget:self action:@selector(myActionMethod:) forControlEvents:UIControlEventTouchUpInside]; 

     myLeftButton = [[UIBarButtonItem alloc]initWithCustomView:leftButton]; 
     self.navigationItem.leftBarButtonItem = myLeftButton; 
0
self.navigationItem.leftBarButtonItem =[[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped)]autorelease]; 
相關問題