我正在开发一个应用程序,该应用程序可使用户彼此堆叠图形。

图形被实例化为UIImageView,并且在实际图形之外是透明的。我还使用平移手势让用户在屏幕上拖动它们。

因此,当您将一堆不同大小和形状的图形彼此叠加在一起时,您可能会有一种幻想,即您正在触摸一个子索引视图,但是实际上您在触摸顶部的视图,因为它的某些透明部分将鼠标悬停在您的接触点上。

我想知道是否有人对我们如何才能做到只听imageview实体部分的平移手势有想法。或者可以加强用户体验的东西,以便他们触摸的就是他们选择的东西。谢谢

最佳答案

创建自己的UIImageView子类。在子类中,如果该点位于图像的透明部分中,则重写pointInside:withEvent:方法以返回NO。

当然,您需要确定某个点是否在透明零件中。 :)

如果您碰巧用CGPathUIBezierPath勾勒出图像的不透明部分,则可以使用CGPathContainsPoint-[UIBezierPath containsPoint:]轻松实现。

如果没有方便的路径,则必须检查图像的像素数据。在stackoverflow.com上已经有很多答案可以解释如何做到这一点。搜索get pixel CGImageget pixel UIImage

10-07 19:54
查看更多