我如何有效地在CATiledLayer
上绘制一个CGPath
?目前,我是通过以下方式检查瓦片的边界框是否与路径的边界框相交:
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context {
CGRect boundingBox = CGPathGetPathBoundingBox(drawPath);
CGRect rect = CGContextGetClipBoundingBox(context);
if( !CGRectIntersectsRect(boundingBox, rect) )
return;
// Draw path...
}
这种方式效率不高,因为
drawLayer:inContext:
会被多个线程多次调用,导致路径被重复绘制多次。有更好、更高效的方法吗?
-drawLayer:inContext:
确实应该被调用多次,假设图层的尺寸大于单个瓷砖。 - Andrew Madsen