每个CALayer都有它自己的CGContextRef吗?
问题描述:
我试图找出该怎么含有非矩形路径的CALayer命中检测的最佳方式。我知道CGContextPathContainsPoint
函数,但我不知道如何获取适当的CGContextRef
时,我需要做点击检测(如鼠标下降)的参考。出于命中检测的目的,保留对CGContextRef
传递给(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
委托方法的引用是否安全?我不知道如果相同CGContextRef
可能被其它层进行修改。每个CALayer都有它自己的CGContextRef吗?
答
让该图层拥有一个CGPath并命中该测试。然后,您不必担心保留上下文是否安全,而且您也不必每次都重新绘制路径。
答
使用CAShapeLayer
代替CALayer
,如果你正在处理绘制形状上层。 CAShapeLayer
包含CGPath,因此您不需要在您的CALayer
中保留CGPath。