我正在开发一款应用程序,让用户可以将图形叠加在一起。
图形被实例化为UIImageView,并且在实际图形之外是透明的。我也使用平移手势让用户将它们拖到屏幕上。
因此,当你有一堆不同大小和形状的图形相互叠加时,你可能会产生一种幻觉,即你正在触摸一个子索引视图,但实际上你是触摸顶部视图,因为一些透明的部分它徘徊在你的接触点上。
我想知道是否有人有关于我们如何才能完成的想法,只能在imageview的实体部分听取平移手势。或者可以收紧用户体验的东西,这样他们所触摸的就是他们所选择的。感谢
答案 0 :(得分:6)
创建自己的UIImageView
子类。在子类中,如果该点位于图像的透明部分,则覆盖pointInside:withEvent:
方法以返回NO。
当然,您需要确定一个点是否在透明部分。 :)
如果碰巧有CGPath
或UIBezierPath
概述了图片的不透明部分,可以使用CGPathContainsPoint
或-[UIBezierPath containsPoint:]
轻松完成。
如果没有方便的路径,则必须检查图像的像素数据。 stackoverflow.com上已经有很多答案可以解释如何做到这一点。搜索get pixel CGImage
或get pixel UIImage
。