1

嗨,我想在按下按钮后更改按钮的背景,即按钮不应变回上一个图像。

但是,我无法这样做。我的代码如下。谁能告诉我单击按钮后如何将图像更改为“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];
4

3 回答 3

6

方法1

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

在此处输入图像描述

方法2

如果您想使用代码来生成UIButton(这让我觉得很奇怪),那么您似乎在做正确的事情。你确定你的包里有图片吗?您没有包含图像扩展名(如 .jpg 等)

于 2011-08-21T06:19:54.017 回答
1

您提到过,您不希望图像变回......然后,您不必为突出显示或选择的状态设置它,而是必须为状态 UIControlStateNormal 设置它。

但是由于您在按下按钮后需要它,因此您必须捕获按钮被按下的事件并在其中设置背景图像。

希望它有所帮助;)

于 2011-08-21T07:35:56.460 回答
0
[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateSelected ];

...以编程方式执行您想要的操作,而不是背景图像。但我认为您应该遵循 Srikar 的回答并尽可能使用界面生成器。

于 2012-11-21T12:01:30.447 回答