【问题标题】:Check empty UIView?检查空的 UIView?
【发布时间】: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


【解决方案1】:

为什么不在用户第一次在框中绘制东西时将 BOOL 设置为 YES 呢?这可以在您的手势识别器目标方法中完成。如果他们点击保存并且 BOOL 仍然是 NO,他们没有绘制任何东西。比尝试分析生成的图像要简单得多。

【讨论】:

  • 这是最好的解决方案,因为它非常简单。每个人总是想太多!顺便说一句,大胡子!
猜你喜欢
  • 2016-04-05
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多