如何比较iOS 8中的两个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

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

 -(BOOL)firstimage:(UIImage *)image1 isEqualTo:(UIImage *)image2 { NSData *data1 = UIImagePNGRepresentation(image1); NSData *data2 = UIImagePNGRepresentation(image2); return [data1 isEqualToData:data2]; } 

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

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

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

在可能的情况下,我宁愿将state / imageId保存在变量中以进行比较