我使用下面给出的方法
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
答案 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保存在变量中