如何在iOS中点击时更改自定义按钮的图像?

时间:2012-05-28 02:15:52

标签: ios button

我使用带有Image的自定义按钮。 通常,当我们点击按钮时,按钮的颜色已经改变。

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

我该如何改变?

感谢。

6 个答案:

答案 0 :(得分:11)

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

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

或背景图片:

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

答案 1 :(得分: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];
}

瞧!问题解决了:))

答案 2 :(得分:1)

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

答案 3 :(得分: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];

答案 4 :(得分:0)

我这样做了:

某处,在我的Case 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];
    }

然后点击Click Event

- (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,但您可以简单地设置按钮图像Like This

[btnVolume setImage:[UIImage imageNamed:@"NO1.png"]
    forState:UIControlStateSelected];

答案 5 :(得分:0)

Swift 3

中的

Jose Rafael Santiago Jr.'s Answer

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

或背景图片:

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