如何在iPhone中单击时更改按钮背景图像?

问题描述:

如何更改UIButton被点击时的背景图像,它应该保持原样,直到单击另一个按钮。如何在iPhone中单击时更改按钮背景图像?


[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

每次用户点击视图中的任何按钮时,都需要设置图像。 所以,当用户点击你的按钮,将其图像设置为你想要的东西(让我们假设它更黑),其余的按钮正常图像(让我们假设更轻)。然后当用户点击其他按钮时,重复该过程。

[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

你有没有考虑过使用UISegmentedControl?这支持剩下的功能,直到另一个按下。只需查看文档即可找到设置图像的方法并以编程方式设置所选片段。

+0

正在寻找“Button” – Devang 2011-03-23 06:30:52

您需要查看UIButtonClass参考才能获得解决方案。

工作代码:

// 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]; 
     } 
}