点按开关按钮的图像

时间:2014-11-29 01:15:53

标签: ios objective-c

我有以下代码

- (IBAction)switchSetting:(UIButton *)sender {
    if([sender.currentImage isEqual:[UIImage imageNamed:@"settings_on"]]){
        [sender setImage:nil forState:UIControlStateNormal];
        //[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateHighlighted];
        [sender setTintColor:[UIColor clearColor]];
    }else{
        [sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
        //[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateSelected];
        //[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateReserved];
        //[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateHighlighted];
        [sender setTintColor:[UIColor clearColor]];
    }
}

所有按钮背景图像都设置为" settings_off"。这样,当我想切换设置时,我将按钮图像设置为" settings_on"或者没有。

问题是当我运行应用程序时,图像设置为" settings_on"工作正常(好吧,一个问题是我需要第一次点击两次才能进行切换,但现在这样做很小)但是没有图像集的按钮永远不会切换。我尝试设置各种状态(选中,突出显示,正常)的图像,当我这样做,然后在从开启切换到关闭(零)之后,它不会切换回来(而不是在被评论时)出)。我输了,任何帮助表示感谢!

编辑:清除其背景图像中的所有按钮,并仅使用"图像"让它运作;即使我仍然不明白为什么我最初的方法不应该起作用。 AFAIK图像视图将覆盖背景视图... 有没有人知道为什么我必须在第一次点击两次才能开关?

3 个答案:

答案 0 :(得分:0)

您是否尝试过以下代码?

- (IBAction)switchSetting:(UIButton *)sender {
if([sender backgroundImageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"settings_off"] ){
    [sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
}else{
    [sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateNormal];
}

答案 1 :(得分:0)

您可以使用sender.currentImage检查UIButton图像:

- (IBAction)switchSetting:(UIButton *)sender {

if ([sender.currentImage isEqual:[UIImage imageNamed:@"settings_off"]]) 
{
[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];

}
else
{
[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateNormal];


}

}

希望这可以帮助您检查按钮当前图像。

答案 2 :(得分:0)

您可以尝试相应地设置按钮上的tag值,然后您可以使用switch声明检查条件。