如何为 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 设置按钮图像的主要内容,如果未能解决你的问题,请参考以下文章
如何为 RecyclerView 设置 onItemClickListener? [复制]