如何在iOS 8中比较两个UIImage

时间:2014-10-20 13:44:52

标签: ios objective-c ipad uiimageview uiimage

我使用下面给出的方法

IBOutlet UIImageView * imgViewCheck;

- (IBAction)clkCheckUncheck:(id)sender {
    if (imgViewCheck.image == [UIImage imageNamed:@"uncheck.png"]) {
        imgViewCheck.image = [UIImage imageNamed:@"check.png"];
    } else {
        imgViewCheck.image = [UIImage imageNamed:@"uncheck.png"];
    }
}

它适用于iOS7但不适用于iOS8

2 个答案:

答案 0 :(得分:7)

请比较NSData对象而不是比较UIImage对象。

-(BOOL)firstimage:(UIImage *)image1 isEqualTo:(UIImage *)image2 {
    NSData *data1 = UIImagePNGRepresentation(image1);
    NSData *data2 = UIImagePNGRepresentation(image2);

    return [data1 isEqualToData:data2];
}

答案 1 :(得分:7)

我不依赖于将图像属性与UIImage方法返回的地址进行比较(我认为它可能是新分配的块)。

如果你真的需要比较数据(图像)是否相同,你可以使用类似的东西:

UIImage* checkImage = [UIImage imageNamed:@"check.png"];
NSData *checkImageData = UIImagePNGRepresentation(checkImage);
NSData *propertyImageData = UIImagePNGRepresentation(imgViewCheck.image);
if ([checkImageData isEqualToData:propertyImageData]) {
  //do sth
}

在可能的情况下,为了进行比较,我希望将state / imageId保存在变量中