2014-01-24 24 views
0

我試圖建立一個不同的圖像(高亮顯示),當用戶按下UIBarButtomItem與此代碼:UIBarButtomItem圖像強調

self.addButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"addButton"] 
                style:UIBarButtonItemStylePlain 
               target:self 
               action:@selector(addAlert:)]; 
[self.addButton setBackgroundImage:[UIImage imageNamed:@"addButtonHigh"] 
           forState:UIControlStateSelected 
          barMetrics:UIBarMetricsDefault]; 
self.navigationItem.rightBarButtonItem = self.addButton; 

但它無法正常工作。

該按鈕與「addButton」圖像一起出現,但按下時,「addButtonHigh」圖像不會出現。

謝謝你在前進, 維克多

+0

從IOS文檔:UIControlStateSelected 控件的選定狀態。對於許多控件,這個狀態對行爲或外觀沒有影響。但其他子類(例如UISegmentedControl類)可能會根據其所選狀態而有不同的外觀。您可以通過選定的屬性檢索並設置此值。 @ Chancy的答案就是你想要的。 – simalone

+0

@simalone嘗試沒有成功。 – vbarba

回答

1

變化UIControlState從UIControlStateSelectedUIControlStateHighlighted。如果你想改變突出顯示的背景圖像。您需要更改UIControlState。

以下是我測試的代碼片段。有用。

self.addButton = [[UIBarButtonItem alloc] initWithTitle:@"hello" style:UIBarButtonItemStylePlain target:self action:@selector(addAlert:)]; 

[self.addButton setBackgroundImage:[UIImage imageNamed:@"font_minus_32.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[self.addButton setBackgroundImage:[UIImage imageNamed:@"font_plus_32.png"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 

self.navigationItem.rightBarButtonItem = self.addButton; 

也可能是下面的代碼是你想要的代碼。

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
[btn setBackgroundImage:[UIImage imageNamed:@"font_minus_32.png"] forState:UIControlStateNormal]; 
[btn setBackgroundImage:[UIImage imageNamed:@"font_plus_32.png"] forState:UIControlStateHighlighted]; 
[btn addTarget:self action:@selector(addAlert:) forControlEvents:UIControlEventTouchUpInside]; 
[btn sizeToFit]; 

self.addButton = [[UIBarButtonItem alloc] initWithCustomView:btn]; 
self.navigationItem.rightBarButtonItem = self.addButton; 
+0

我試過都沒有成功。 – vbarba

+0

@ user3175572我更新了我的答案。我設置了兩個UIControlState的setBackgroundImage。當我突出顯示按鈕時,它改變了。你可以試試這個。 – chancyWu

0
- (IBAction)buttonClicked:(id)sender 
{ 

UIImage *buttonImage = [UIImage imageNamed:@"home.png"]; 
[myButton setBackgroundImage:buttonImage forState:UIControlStateHighlighted]; 

} 

UIControlStateHighlighted控制的突出狀態。當觸摸進入和退出過程中以及觸摸事件發生時,控件進入此狀態。您可以通過突出顯示的屬性檢索並設置此值。

UIControlStateSelected控件的選定狀態。對於許多控件,這個狀態對行爲或外觀沒有影響。但其他子類(例如UISegmentedControl類)可能會根據其所選狀態而有不同的外觀。您可以通過選定的屬性檢索並設置此值。