如何在修改CAShapeLayer的路径时重绘它?

Pab*_*o3D 5 redraw cashapelayer ios

我正在尝试向我的CAShapeLayer路径添加子路径,但除非我首先分配nil到路径然后重新分配myPathCAShapeLayer. 我已经尝试过setNeedsRedisplay但它不起作用。

LoadView这是wheremyPath和are 属性中的代码shapeLayer

// The CGMutablePathRef
CGPathMoveToPoint(myPath, nil, self.view.center.x, self.view.center.y);
CGPathAddLineToPoint(myPath, nil, self.view.center.x + 100.0, self.view.center.y - 100.0);

// The CAShapeLayer
shapeLayer = [CAShapeLayer layer];
shapeLayer.path = myPath;
shapeLayer.strokeColor = [UIColor greenColor].CGColor;
shapeLayer.lineWidth = 2.0;
[self.view.layer addSublayer:shapeLayer];
Run Code Online (Sandbox Code Playgroud)

例如,这是我对路径进行更改的地方。我只是添加一个新的子路径myPath

- (void)handleOneFingerSingleTapGesture:(UIGestureRecognizer *)sender
{
    // I add a new subpath to 'myPath'
    CGPathMoveToPoint(myPath, nil, self.view.center.x, self.view.center.y);
    CGPathAddLineToPoint(myPath, nil, self.view.center.x + 100.0, self.view.center.y + 100.0);

    // I must do this to show the changes
    shapeLayer.path = nil; 
    shapeLayer.path = myPath;
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何处理这个问题?我使用的是iOS 5.0。

use*_*249 0

您必须调用 [shapeLayer didChangeValueForKey:@"path"]以使图层重新渲染自身。