如何为 UIControlStateSelected 设置按钮图像

Posted

技术标签:

【中文标题】如何为 UIControlStateSelected 设置按钮图像【英文标题】:How to set the button image for UIControlStateSelected 【发布时间】:2011-08-21 05:10:18 【问题描述】:

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

但是,我不能这样做。我的代码如下。谁能告诉我点击按钮后如何将图像更改为“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】:

方法1

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

方法2

如果您想使用代码生成UIButton(这让我很不解),那么您似乎做对了。你确定你的包里有图片吗?您没有包含图片扩展名(如 .jpg 等)

【讨论】:

@SharmaVishal 谢谢!如果您觉得我的回答有帮助,请投票。【参考方案2】:

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

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

希望它有所帮助;)

【讨论】:

【参考方案3】:
[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateSelected ];

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

【讨论】:

以上是关于如何为 UIControlStateSelected 设置按钮图像的主要内容,如果未能解决你的问题,请参考以下文章

如何为下拉菜单制作 CSS 边框?

如何为 CAShapeLayer 路径和填充颜色设置动画

iPhone - 如何为图像着色?

如何为 RecyclerView 设置 onItemClickListener? [复制]

WCF - 如何为 NTLM 身份验证配置 netTcpBinding?

如何为 UIToolbar 上的按钮添加滚动?