4

のパスにサブパスを追加しようとしていますが、最初にパスに割り当ててから に再割り当てしCAShapeLayerない限り、変更は表示されません。で試しましたが、うまくいきません。nilmyPathCAShapeLayersetNeedsRedisplay

LoadViewwhereプロパティmyPathshapeLayerare プロパティのコードは次のとおりです。

// 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];

これは、たとえば、パスの変更を行う場所です。に新しいサブパスを追加するだけです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;
}

誰でもこれに対処する方法を知っていますか?. iOS5.0を使用しています。

4

2 に答える 2

-1

[shapeLayer didChangeValueForKey:@"path"]レイヤーを再レンダリングするには、呼び出す 必要があります。

于 2013-08-03T00:19:57.843 に答える