UIView一共有三层。一层绘制一个矩形。一个人画了一个圆圈。一个绘制多边形。该层的不透明度为否。当我触摸多边形时,我想获得绘制多边形的正确图层。并且三层完全填充到 View 中。我已经实现了这个。但是我不知道我们是否有更好的解决方案来解决它。我的方法是这样的: 1.使用-drawLayer:inContext绘制内容。存储您使用的 CGPath。 2.在UIView的-touchedEnded:withEvent方法中。使用 CGPathContainsPoint() 检测触摸点是否包含在 CGPath 中。
也许这是解决这个问题的愚蠢方法。谁能告诉我如何更好地解决它?
最佳答案
如果您需要对路径进行准确的 HitTest ,恐怕您必须按照您的建议使用 CGPathContainsPoint
自己检查/迭代层层次结构。
在迭代时,您可以通过跳过点在框架之外的层来优化它。
对于不太细粒度的控制,您可以使用 CALayer
s 获取触摸层
- (CALayer *)hitTest:(CGPoint)thePoint
方法。
如果您有一个嵌套级别 < 1000 的图层层次结构(这几乎总是正确的),我不会太担心。
关于iphone - 如何检测触摸点是否被CALayer的绘制内容包含?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9193947/