2013-01-06 65 views
3

我一個工具欄使用這些圖標作爲欄按鈕項
http://stopiransnukes.org/images/home_icon.png

http://www.bladmuziekplus.nl/shop/files/images/icon_home.png
但背景圖像轉換爲白色,甚至自動如果黑色。欄按鈕的物品圖像轉向白色圖標,即使它的黑色

我嘗試通過代碼設置圖像背景,但仍然變成了白色。

手動:我拖動了+將上面的圖片拖放到了項目中。我已經選擇了條形按鈕項目並且在右側欄的第4個選項(盾形圖標)上選擇了不同的色調並且在條形按鈕下方設置了下拉圖像到上面的圖像。

編程:

[self.homeButton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIColor blackColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal]; 

    [[self.homeButton] setImage:[UIImage imageNamed:@"home_icon.png"]]; 

如何解決呢?
在此先感謝。

+0

您需要發佈您的代碼或截圖你是如何在工具欄 –

+0

@ R.A我已經編輯了問題,在增加一個按鈕。 –

+0

你爲什麼不試試這個。只需拖放一個uibutton並在故事板中添加一個圖像,然後將其添加到uibarbuttonitem中,只需拖放本身,然後向uibutton添加一個動作方法就可以創建你需要的內容。不需要任何代碼,除了一個按鈕的操作方法 –

回答

1

viewDidLoad中

[super viewDidLoad]; 

//uıbarButtonItem firstButtonItem,secondButtonItem 
UIImage* firstButtonImage = [UIImage imageNamed:@"firstImageName"];; 
CGRect frameimg = CGRectMake(0, 0, 30, 30); 
UIButton * someButton = [[UIButton alloc] initWithFrame:frameimg]; 
[someButton setBackgroundImage:firstButtonImage forState:UIControlStateNormal]; 
[someButton addTarget:self action:@selector(goToUserProfile) 
    forControlEvents:UIControlEventTouchUpInside]; 
self.firstButtonItem = [[UIBarButtonItem alloc] initWithCustomView:someButton]; 


UIImage* secondButtonImage = [UIImage imageNamed:@"secondImageName"]; 
frameimg = CGRectMake(0, 0, 30, 30); 
someButton = [[UIButton alloc] initWithFrame:frameimg]; 
[someButton setBackgroundImage:secondButtonImage forState:UIControlStateNormal]; 
[someButton addTarget:self action:@selector(likePhoto) 
    forControlEvents:UIControlEventTouchUpInside]; 
[someButton setTag:1]; 
self.secondButtonItem = [[UIBarButtonItem alloc] initWithCustomView:someButton]; 

[self.toolbar setItems:[self addItemsToToolbar]]; 

AddItemsToToolbar方法

- (NSMutableArray *)addItemsToToolbar{ 
NSMutableArray *items = [[NSMutableArray alloc] init]; 
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
[items addObject:flexSpace]; 
[items addObject:self.firstButtonItem]; 
[items addObject:flexSpace]; 
[items addObject:self.secondButtonItem]; 
return items; 

}

+0

這工作謝謝+1。 –

1

這是正常行爲,您可以在人機界面指南中閱讀它。

http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW8

如果你想改變,你需要編寫自己的子類。

+0

所以我應該做的,以保持相同的圖像保存在項目中。在這種情況下black.Please告訴我如何做到這一點?我仍然困惑。 –

+0

這應該對你有幫助:http://stackoverflow.com/questions/3431961/uibarbuttonitem-icon-white-when-added-via-ib-black-when-added-programmatically – Andy

+0

我已經在故事板上創建了一個欄按鈕項。如何將此代碼鏈接到該代碼。我嘗試了上述代碼,但它不起作用 –

0
UIImage* infoButtonImage = [UIImage imageNamed:@"info_button.png"];; 
CGRect frameimg = CGRectMake(0, 0, infoButtonImage.size.width, infoButtonImage.size.height); 
UIButton * someButton = [[UIButton alloc] initWithFrame:frameimg]; 
[someButton setBackgroundImage:infoButtonImage forState:UIControlStateNormal]; 
[someButton addTarget:self action:@selector(actionOfButton) 
    forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem * infoButton = [[UIBarButtonItem alloc] initWithCustomView:someButton]; 

該代碼將解決您的問題

+0

我已經在故事板上創建了一個條形按鈕項。如何將此代碼鏈接到該代碼。我嘗試了上面的代碼,但它不工作。 –

+0

我是否需要將infoButton添加到工具欄視圖?因爲變量infoButton ID未使用 –

+0

@JacobWood老實說,我不知道如何從界面生成器做到這一點,但我可以幫助你的代碼。首先你需要有一個你想添加的UIBarButtonItem數組。所有元素都必須是UIBarButonItem,而不是您可以調用此方法填充工具欄。 「[self.toolbar setItems:items];」 –

2

這是一個循序漸進的過程添加一個圖像到UIButton,並將UIButton作爲custom view添加到storyboard本身中的UIBarButtonItem內。我將添加一些圖像,以便您完全理解這一點。

步驟1:拖放toolbarstoryboard視圖 Drag and drop the toolbar in your view

步驟2:在你的view

enter image description here

步驟3拖放UIButton將圖像拖放到中

enter image description here

第4步:拖放工具欄上的UIButton,現在你可以在右側,這是UIBarButtonItem內加入。現在你只需要連接你的按鈕的操作方法。

enter image description here

+0

我已經嘗試過,但現在將圖像作爲背景圖標而不是圖標即使其黑色變爲白色。 –

+0

無法通過上述方法 –

+0

定製,或者如果是,那麼如何。我試圖添加與代碼,但它仍然不起作用 –

相關問題