如何比较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保存在变量中以进行比较