2011-08-21 123 views
1

嗨我想在按下按钮后更改我的按钮的背景,即按钮不应该变回到先前的图像。如何设置UIControlStateSelected的按钮图像

但是,我无法这样做。我的代码如下。任何人都可以建议我点击按钮后如何将图像更改为“custom_button_highlight”?

UIImage *buttonImageNormal = [UIImage imageNamed:@"custom_button"]; 
UIImage *stretchableButtonImageNormal = [buttonImageNormal 
             stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 

UIImage *buttonImagePressed = [UIImage imageNamed:@"custom_button_highlight"]; 
UIImage *stretchableButtonImagePressed = [buttonImagePressed 
              stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 

button.titleLabel.font = [UIFont boldSystemFontOfSize:14]; 
[button setBackgroundImage:stretchableButtonImageNormal 
        forState:UIControlStateNormal]; 

[button setBackgroundImage:stretchableButtonImagePressed 
        forState:UIControlStateHighlighted]; 

[button setBackgroundImage:stretchableButtonImagePressed 
        forState:UIControlStateSelected]; 

回答

1

您提到过,您不希望图片变回... 然后,您不必为突出显示或选择的状态设置图片,将其设置为UIControlStateNormal状态。

但是由于您在按下按钮后需要它,您必须捕获按钮已被按下的事件并将背景图像设置在那里。

希望它帮助;)

6

方法一

我看到你使用代码来生成UIButton。使用Interface Builder更容易。试试这个 - 在界面构建器(Xcode4)中,创建按钮&打开右侧边栏。之后,选择按钮,&按钮的类型为custom。之后,在state config中,有各种状态,对于每种状态,您可以在image中设置图像。希望这有助于...

enter image description here

方法2

如果你想使用代码来生成UIButton(被它打败了我为什么),那么你似乎在做正确的事情。你确定图像在你的包中吗?您没有包含图片扩展名(例如.jpg等)

+0

这很棒,很简单!谢谢! – Jean

+0

Awasome斯里卡:) –

+0

@SharmaVishal谢谢!如果您发现我的回答有帮助,请投票。 –

0
[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateSelected ]; 

...你想要做什么编程,而不是背景图像。但是我认为,如果可以的话,你应该遵循斯里卡尔的回答并使用接口生成器。