【发布时间】:2013-11-21 22:18:21
【问题描述】:
在我的应用程序中,我有一个 UIView,它将根据用户触摸进行绘制。它旨在用作签名框。当用户完成“绘图”时,他们点击接受,应用程序继续。但是,我想检查 UIView 是否实际被绘制,例如它不只是空白。我尝试制作另一个空 UIImageView 并检查它们的图像是否相等但失败了。这是我尝试过的:
注意:signatureBox 是 UIView 的子类,你可以画进去。我保存签名,然后和空白 UIImageView 中的图片比较。
viewDidLoad{
UIGraphicsBeginImageContext(self.signatureBox.bounds.size);
[self.signatureBox.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(image);
self.blankImage.image = [UIImage imageWithData:imageData];
}
mySaveMethod{
UIGraphicsBeginImageContext(self.signatureBox.bounds.size);
[self.signatureBox.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *imageData = UIImagePNGRepresentation(image);
self.signatureImage = [UIImage imageWithData:imageData];
if(self.signatureImage == self.blankImage.image){
NSLog(@"Blank");
}
else{
NSLog(@"not blank");
}
}
无论我是否在签名框中绘制,此 nslog 每次都“非空白”。知道为什么吗?
【问题讨论】:
-
我认为你的比较不是很好。也许这会有所帮助:[链接][1] 编辑:我想指出@rdelmar 所说的,你永远不会用 = 比较对象,对象使用要比较的方法。 [1]:stackoverflow.com/a/8182232/2902264
-
我不知道这是否可行(我从未尝试过比较图像),但您不使用“=”比较对象,您使用 isEqual:
-
如果上面的建议不起作用,只需检查图像中每个像素的颜色,看看它是否等于默认颜色,如果不是那么你就知道图像不是空白的。
标签: ios objective-c cocoa-touch uiview uiimageview