每个CALayer都有它自己的CGContextRef吗?

时间:2010-04-16 15:56:08

标签: objective-c cocoa

我正在尝试找出在包含非矩形路径的CALayer上进行命中检测的最佳方法。我知道CGContextPathContainsPoint函数但我不知道如何在需要进行命中检测(如鼠标按下)时获取对相应CGContextRef的引用。保留对传递给CGContextRef委托方法的(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx的引用以进行命中检测是否安全?我不确定其他图层是否可能修改相同的CGContextRef

2 个答案:

答案 0 :(得分:3)

让图层拥有一个CGPath并对其进行命中测试。然后,您不必担心保留上下文是否安全,并且您不必每次都重新绘制路径。

答案 1 :(得分:1)

如果您正在处理在图层上绘制形状,请使用CAShapeLayer代替CALayerCAShapeLayer包含CGPath,因此您无需在CALayer中维护CGPath。