複雑な UIBezierCurve があり、特定の線パラメーターを使用して一度描画し、他の線パラメーターを使用してオーバーレイとして再度描画する必要がありますが、曲線の最後の部分を前のものよりもわずかに短くする必要があります。
これを行うには、最後の部分までで曲線を作成しaddLineToPoint:
、moveToPoint:
この曲線のコピーを作成して、元の曲線とコピーされた曲線で異なる線の最終セグメントを追加します。次に、元のカーブとコピーしたカーブをストロークします。
問題は、期待どおりに機能しないことです。次の方法で曲線のコピーを作成します。
UIBezierPath* copyCurve = [originalCurve copy];
その後、originalCurve で行った描画が copyCurve にも適用されるため、この曲線を個別に描画することはできません。
オリジナルとコピーの間のこの接続の理由は何ですか?どうすればそれを取り除くことができますか?
EDIT 1:私が見つけた解決策は、次の方法でコピーを作成することです:
UIBezierPath* copyCurve=[UIBezierPath bezierPathWithCGPath:CGPathCreateMutableCopy(originalCurve.CGPath)];
これは適切に機能するため、取得したコピーの不変性に問題がある可能性があります
[originalCurve copy]