4

我使用带有图像的自定义按钮。在正常情况下,当我们点击按钮时,按钮的颜色已经改变。

当我点击该自定义按钮时,我想从自定义按钮更改图像。

我怎样才能改变它?

谢谢。

4

6 回答 6

11

假设这是一个标准的 UIButton,您可以在初始化按钮时执行以下操作:

[btnObj setImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted];

或背景图像:

[btnObj setBackgroundImage:[UIImage imageNamed:@"imgName.png"] forState:UIControlStateHighlighted];
于 2012-05-28T02:30:45.850 回答
4

首先创建一个按钮作为视图控制器的成员变量。让我们称之为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];
}

瞧!问题解决了 :)

于 2012-05-28T02:35:13.653 回答
1

您可以使用以下两种方法 – setBackgroundImage:forState: – setImage:forState: 检查UIButton

于 2012-05-28T02:31:09.493 回答
0

首先在情节提要中使用“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];

于 2016-08-09T11:51:37.423 回答
0

我是这样做的:

某处,在我的情况下 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];
于 2016-11-29T07:27:18.073 回答
0

Jose Rafael Santiago Jr.Swift 3中的回答:

yourButton.setImage(UIImage(named: "imgName"), for: .normal)

或背景图片:

yourButton.setBackgroundImage(UIImage(named: "imgName"), for: .normal)
于 2017-04-16T13:47:42.540 回答