9
votes

Faire une copie indépendante de UibezierPath?

J'ai un uibeziercurve complexe que j'ai besoin de dessiner une fois avec des paramètres de ligne particuliers, puis de la tirer à nouveau comme une superposition avec d'autres paramètres de ligne, mais aussi j'ai besoin de la dernière partie de la courbe pour être légèrement plus courte que dans la précédente. .

Pour ce faire, je veux créer la courbe par addlinetopoint: , MOVETOPoint: jusqu'à la dernière pièce, puis effectuez une copie de cette courbe et ajoutez la finale. segments de la ligne différemment dans les courbes originales et copiées. Et puis je caresse la courbe d'origine et le copié.

Le problème est qu'il ne fonctionne pas comme je m'y attendais. Je crée une copie de la courbe par: xxx

et le dessin que je fais dans l'originalCurve après cela, est appliqué également à la copie, donc je ne peux donc pas faire indépendant Dessinez pour l'une de ces courbes.

Quelle est la raison de cette connexion entre original et copie et comment puis-je me débarrasser de cela?

Editer 1: Une solution que j'ai trouvée est de créer la copie de la manière suivante: xxx

puisque cela fonctionne correctement, le problème est peut-être dans l'immuabilité de la copie que je reçois xxx


2 commentaires

Avez-vous alloc / init Votre copieCurve?


Non, ce qui est écrit dans ma question ...


3 Réponses :


24
votes

Créer un nouveau chemin identique en utilisant le CGPATH.

path2 = [UIBezierPath bezierPathWithCGPath:path1.CGPath];


2 commentaires

S'il vous plaît, regardez mon édition de la question. Il me semble que je ne pourrai pas changer l'objet de chemin immuable, alors j'ai probablement besoin du mutable.


Vous ne pouvez pas changer le CGPATH, mais l'objet UIBZierPath réalisé avec le CGPATH est mutable.



2
votes

En plus de @jrturton Réponse: -

Alternativement Nous pouvons utiliser: - xxx

 Entrez la description de l'image ici

Référence


1 commentaires

Mettez à jour pour SWIFT 3 Laissez cibledarc = arc.copy (CaysantWithWithWidth: 5.0, Linecap: .Mais, Linejoin: .miter, MIBRIMIT: 10)



3
votes

copie () fonctionne bien pour moi comme swift 4. xxx

originalPath n'est pas modifié.


0 commentaires