如何将图像与按钮图像进行比较

时间:2015-09-14 07:21:04

标签: ios objective-c

我正在尝试将图像与按钮图像进行比较,但我的代码无法满足此要求。我在这做错了什么?请帮帮我。

NSString *btnImage;
UIButton *  sharebutton;

btnImage = @"arrow.png";
    [sharebutton setImage:[UIImage imageNamed: btnImage] forState:UIControlStateNormal];

if ([sharebutton.imageView.image isEqual:[UIImage imageNamed:@"arrow.png"]])
    {
        NSLog(@"ok");
    }
    else
    {
        NSLog(@"else");
    }

5 个答案:

答案 0 :(得分:0)

if (sharebutton.currentImage == UIImage(named: "arrow.png")) {

}

你需要把它转换成obj-c但我想你会得到它。 :)

答案 1 :(得分:0)

如果要将按钮图像与其他图像名称进行比较,请按以下方式设置按钮图像:

sharebutton.setImage(UIImage(named: "arrow.png"), forState: UIControlState.Normal)

请记住,此处有一件事没有为按钮设置背景图片。

现在,您可以通过以下方式将按钮图像与其他图像进行比较:

if (sharebutton.currentImage?.isEqual(UIImage(named: "arrow.png")) != nil)  {
    println("YES")
} else {
    println("NO")
}

答案 2 :(得分:0)

UIImage *image = [sharebutton imageForState:UIControlStateNormal];
if ([image isEqual:[UIImage imageNamed:@"arrow.png"]]) {

}

这样做,你可以解决它。

答案 3 :(得分:0)

这就是我正在使用的:

NSData *leftImageData = UIImagePNGRepresentation([sharebutton imageForState:UIControlStateNormal]);

//take note that using `imageForState:` only works if you set your image using `setImage:forState:`
//if you are using `setBackgroundImage:forState:`, `[shareButton currentBackgroundImage]` is what you need.

NSData *rightImageData = UIImagePNGRepresentation([UIImage imageNamed:@"arrow.png"]);

if ([leftImageData isEqualToData:rightImageData])
{
    //same
}
else
{
    //not same
}

答案 4 :(得分:0)

出于性能原因,我会比较文件名而不是创建更昂贵的临时图像

NSString *btnImage;
UIButton *sharebutton;


btnImage = @"arrow.png";
[sharebutton setImage:[UIImage imageNamed: btnImage] forState:UIControlStateNormal];

if ([btnImage isEqualToString:@"arrow.png"])
  {
    NSLog(@"ok");
  }
else
  {
    NSLog(@"else");
  }

当然,这需要保持变量btnImage始终保持当前文件名