【问题标题】:How to check which image is in a UIImageView with tags involved, got 45 small images randomly picked by 9 UIImageViews and 5 picked by 5 UIImageViews如何检查涉及标签的 UIImageView 中的图像,得到 9 个 UIImageViews 随机选择的 45 个小图像和 5 个 UIImageViews 选择的 5 个小图像
【发布时间】:2014-10-24 17:16:06
【问题描述】:

我有 9 个 uiimageview,让我们将它们命名为小图像视图,在一个容器视图中和 45 个图像(每组 9 个图像,这意味着我有 5 个组)。我还有 5 个 uiimageview,让我们将它们命名为大图像视图,向上动画(在超级视图中),每个图像从 5 个图像中挑选一个图像......小图像视图根据大图像视图显示的图像从组中挑选 9 个图像。希望这很清楚。

所以下面的if statement 检查哪个图像由小imageview1 显示,以及哪个图像由名为movingRectangle1 的移动大imageview 显示,然后运行我将在语句部分执行的任何代码。我使用UIImagePNGRepresentation 来检查图像,但它似乎会影响动画,因为我将它用于所有小图像视图,每个小图像视图 9 次,这使得每个大图像视图 81 (9 * 9) 次,我该如何使用标签来检查图像,当我调用if statement中的方法时,也许它可以帮助动画顺利运行。任何建议都非常受欢迎。我是 Objective c 的新手,花了 2 周时间试图解决这个问题,所以请来救我。提前致谢。

if ((touch.view == self.imageView1)
    && [UIImagePNGRepresentation(self.movingRectangle1.image) isEqualToData:UIImagePNGRepresentation(image_a)]
    && ([UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_b)]
        || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_c)]
        || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_d)]
        || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_e)]
        || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_f)])){

        // seems converting to PNG over and over has a bad impact on any method called here, big imageviews start to animate erratically if i call any method here
        NSLog(@"imageShape1 touched, correct view!");
    }
else if ((touch.view == self.imageView1)
         &&  ([UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_g)]
              || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_h)]
              || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_i)]
              || [UIImagePNGRepresentation(self.imageView1.image) isEqualToData:UIImagePNGRepresentation(image_j)])){

             NSLog(@"touched but Wrong view!");
         }

【问题讨论】:

    标签: objective-c image if-statement uiimageview tags


    【解决方案1】:

    比较图像数据是一个非常繁重的过程,所以请避免这种情况。

    您应该为每个 Image 设置标签并在 UIImageView 标签属性中设置并比较它们。

    【讨论】:

    • 我使用 [UIView animationWithDuration:() Delay:() Options:() Animations:() Completions:()] 方法为movingRectangles设置动画,在完成块中我调用随机化的方法每个movingRectangle的图像,恰好位于屏幕底部,并且被一个容器覆盖(它从底部覆盖到几乎屏幕中间,因此用户会看到movingRectangle出现在屏幕中间)和小图像视图。小的图像视图应该显示与选取的图像相对应的图像,所以这就是我使用上面的“if 语句”的地方。谢谢兄弟。
    • i) 那么标签是否适合您? ii) 您的图片来自哪里(资源文件夹或通过任何网络服务)?
    • i) 我希望他们会工作,但我愿意接受任何建议或帮助。 ii)它们来自我放入支持文件的文件夹
    • 标签可以工作,那么您在使用标签时遇到了什么问题?有一个简单的出路。为所有图像分配枚举,并且 i)在 uiimageview 中设置该图像时,将 imageview 的标记属性设置为等于该图像枚举值和 ii)当从任何其他 imageView 设置 imageview 的图像时,获取图像并标记两者并设置它们。这样,您所有的 imageViews 都将具有与图像关联的标签值,然后您就可以比较它们。
    • 好吧,我想知道如何使用标签来比较检查图像,没有太多关于标签和枚举与图像一起工作的信息。伙计,我试过了。一个小样本会帮助像我这样的新人。
    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多