2011-03-23 161 views

回答

9

[myButton setImage:[UIImage imageNamed:@"btn_normal.png"] forState:UIControlStateNormal]; 
    [myButton setImage:[UIImage imageNamed:@"btn_highlighted.png"] forState:UIControlStateHighlighted]; 
    [myButton setImage:[UIImage imageNamed:@"btn_highlighted.png"] forState:UIControlStateSelected]; 
    myButton.showsTouchWhenHighlighted = YES; 

第四行myButton.showsTouchWhenHighlighted = YES;會做的伎倆。請嘗試。

+1

+1:myButton.showsTouchWhenHighlighted,今天我學到了一些新東西!:O謝謝,不知道這個在那裏直到現在^^ – 2013-03-19 16:39:07

1

每次用戶點擊視圖中的任何按鈕時,都需要設置圖像。 所以,當用戶點擊你的按鈕,將其圖像設置爲你想要的東西(讓我們假設它更黑),其餘的按鈕正常圖像(讓我們假設更輕)。然後當用戶點擊其他按鈕時,重複該過程。

[yourButton setImage:[UIImage imageNamed:youImage] forState:UIControlStateNormal]; 

希望這會有所幫助。

+0

它改變了圖像時按下但隨後後回來到原先的(舊)圖像......我想保持新的形象,不想允許用戶再次觸摸該按鈕(禁用)新圖像 – Devang 2011-03-23 06:21:50

+0

您可以嘗試使用yourButton.enabled屬性來使用。 – 2011-03-23 06:49:19

+0

我已經嘗試過了,但是它改變了背景圖片顏色,因爲設置啓用或禁用了它自己的顏色 – Devang 2011-03-23 07:29:20

0

你有沒有考慮過使用UISegmentedControl?這支持剩下的功能,直到另一個按下。只需查看文檔即可找到設置圖像的方法並以編程方式設置所選片段。

+0

正在尋找「Button」 – Devang 2011-03-23 06:30:52

2

工作代碼:

// 1) Give tag to all needed button 

// 2) check which button is selected by "sender tag" 

// 3) set all other buttons to not selected 

-(IBAction) buttonPressed:(id)sender 
{ 
     if ([sender isSelected]) 
     { 
      [sender setImage:unselectedImage forState:UIControlStateNormal]; 
      [sender setSelected:NO]; 
     } 
     else 
     {  
      [sender setImage:selectedImage forState:UIControlStateSelected]; 
      [sender setSelected:YES]; 
     } 
}