繁体   English   中英

轻按切换按钮的图像

[英]switch button's image on tap

我有以下代码

- (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”或NIL。

问题是当我运行该应用程序时,将图像设置为“ settings_on”的按钮可以正常工作(嗯,一个问题是,我第一次需要单击两次以进行切换,但那是次要的),但是没有图像集永远不会切换。 我尝试设置图像的各种状态(选中,突出显示,正常),当我这样做时,然后从打开切换到关闭(无)后,它就不会切换回(与被注释掉相对) 。 我迷路了,任何帮助表示感谢!

编辑:从其backgroundImages清除所有按钮,并且仅使用“图像”使其工作; 即使我仍然不明白为什么我最初的方法不起作用。 AFAIK图像视图将覆盖背景视图...有人知道为什么我必须第一次单击两次才能使开关启动吗?

您是否尝试过以下代码?

- (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];
}

您可以使用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];


}

}

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

您可以尝试相应地在按钮上设置tag值,然后再使用switch语句检查条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM