我使用带有图像的自定义按钮。在正常情况下,当我们点击按钮时,按钮的颜色已经改变。
当我点击该自定义按钮时,我想从自定义按钮更改图像。
我怎样才能改变它?
谢谢。
假设这是一个标准的 UIButton,您可以在初始化按钮时执行以下操作:
[btnObj setImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted];
或背景图像:
[btnObj setBackgroundImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted];
首先创建一个按钮作为视图控制器的成员变量。让我们称之为UIButton* myButton
。
然后像这样初始化按钮,并将其图像设置为您希望它最初显示的图像:
myButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[myButton setImage:[UIImage imageNamed:@"OriginalImage"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(onClickMyButton) forControlEvents:UIControlEventTouchUpInside];
那里的第三行将使它在单击按钮时调用函数“onClickMyButton”。那么你编写这个函数,它将图像更改为“NewImage”:
-(void) onClickMyButton
{
[myButton setImage:[UIImage imageNamed:@"NewImage"] forState:UIControlStateNormal];
}
瞧!问题解决了 :)
您可以使用以下两种方法 – setBackgroundImage:forState: – setImage:forState: 检查UIButton
首先在情节提要中使用“btYesAction”和“btNoAction”为按钮创建对象。
现在转到 viewcontroller.m 并粘贴以下代码
<pre>
(IBAction)btYesAction:(id)sender {
UIButton *button = (UIButton *)sender;
button.selected = !button.selected;
[button setImage:[UIImage imageNamed:@"NO1.png"]
forState:UIControlStateSelected];
我是这样做的:
某处,在我的情况下 ViewDidLoad 。. .
if(![[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]){
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-up" backgroundColor:[UIColor clearColor] iconColor:clrPureBlueTint andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}else{
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-off" backgroundColor:[UIColor clearColor] iconColor:[UIColor whiteColor] andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}
然后点击事件
- (void)btnVolumeClicked : (UIButton *)sender{
if ([[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]) {
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"volume_control"];
[[NSUserDefaults standardUserDefaults] synchronize];
}else{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"volume_control"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
[self selectedState];}
在 SelectedState 方法中:
-(void) selectedState{
if(![[NSUserDefaults standardUserDefaults]boolForKey:@"volume_control"]){
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-up" backgroundColor:[UIColor clearColor] iconColor:clrPureBlueTint andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}else{
[btnVolume setImage:[UIImage imageWithIcon:@"fa-volume-off" backgroundColor:[UIColor clearColor] iconColor:[UIColor whiteColor] andSize:CGSizeMake(32, 32)] forState:UIControlStateNormal];
}}
我正在使用 Font Awesome ,但您可以像这样简单地设置按钮图像
[btnVolume setImage:[UIImage imageNamed:@"NO1.png"]
forState:UIControlStateSelected];
Jose Rafael Santiago Jr.在Swift 3中的回答:
yourButton.setImage(UIImage(named: "imgName"), for: .normal)
或背景图片:
yourButton.setBackgroundImage(UIImage(named: "imgName"), for: .normal)