我在UIImages
中有大约15 UIView
个手势识别器。当你触摸一个并稍微平移时,通过在另一个我永久在前面的视图下插入子视图,它会到达其他视图的前面。
我正在寻找一种方法来制作一个按钮,用于移除前面的UIImage
。
我试过了removeFromSuperview
。但是只能通过名称而不是索引位置来调用UIImage
。
exchangeSubview
subViewAtIndex
。
但它完成了它的说法和交流。但我无法找到删除或隐藏的方法。
感谢您提供任何线索。
答案 0 :(得分:0)
您可以生成要删除的图像的哈希值,然后将哈希值与UIImageView中的图像哈希值进行比较,如果它与removeFromSuperview相同,则移动到下一个视图。
OR 尝试比较UIImagePNGRepresentation生成的数据,如果要传递相同的图像以转换为数据,则应返回true。
- (BOOL)imageView:(UIImageView*)iv hasImageWithName:(NSString*)imageName
{
return UIImagePNGRepresentation([UIImage imageNamed:imageName]) == UIImagePNGRepresentation(iv.image);
}
答案 1 :(得分:0)
我建议采用更简单的方法。将视图移动到前面以让用户开始拖动时,将视图保存到weak
实例变量frontImageView
。
当用户点击按钮时,调用如下代码:
[frontImageView removeFromSuperview];
请注意,该方法可让用户在拖动图像视图后删除它,但只能删除一次。删除图像视图后,您必须点击另一个图像视图才能将其删除。如果您想要删除顶部图像视图而不管它是否被轻击/拖动,您需要检查父视图控制器的子视图数组。
如果包含所有图片视图的视图名为containerView
,则代码可能如下所示:
[containerView.subviews.lastObject removeFromSuperview];
第二行会让用户反复点击删除按钮并删除一张又一张图像,而无需点击新图像进行选择。