【发布时间】:2013-08-02 20:20:02
【问题描述】:
我正在使用CAShapeLayer。我试图让它在鼠标事件发生时改变它的路径。例如,当鼠标按下事件发生时,将路径附加到CGMutableRefPath,然后将形状图层的路径设置为它。
问题:当我使用新路径设置CAShapeLayer 路径时,除非我这样做,否则不会使用新路径更新显示。如何告诉系统形状图层的路径已更改并重新绘制自己?
注意:当我创建可变路径的副本并传递它时,它可以工作,但每次都复制并没有性能,并且会导致我的计算机在路径很多时变慢。
CGMutablePathRef paths = CGPathCreateMutable();
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
- (void)mouseDown:(NSEvent *)event {
CGPathAddEllipseInRect(paths, nil, rect);
self.shapeLayer.path = paths; // Works once, but subsequent calls do nothing
self.shapeLayer.path = CGPathCreateCopy(paths); // Works, but super slow
}
【问题讨论】:
标签: cocoa calayer cashapelayer