Ich habe eine komplexe UIBezierCurve, die ich einmal mit bestimmten Linienparametern zeichnen muss, und dann wieder als Überlagerung mit anderen Linienparametern zeichnen, aber ich brauche auch den letzten Teil der Kurve, der etwas kürzer ist als in der vorherigen .
Dazu möchte ich die Kurve nach addLineToPoint:
, moveToPoint:
bis zum letzten Teil erstellen, dann eine Kopie dieser Kurve erstellen und die letzten Segmente der Linie in originalen und kopierten Kurven unterschiedlich hinzufügen. Und dann streiche ich die ursprüngliche Kurve und die kopierte.
Das Problem ist, dass es nicht wie erwartet funktioniert. Ich erstelle eine Kopie der Kurve mit:
%Vor%Und die Zeichnung, die ich in der originalen Kurve danach mache, wird auch auf die copyCurve angewandt, so dass ich für diese Kurven keine unabhängige Zeichnung machen kann.
Was ist der Grund für diese Verbindung zwischen Original und Kopie und wie kann ich sie loswerden?
EDIT 1: Eine Lösung, die ich gefunden habe, ist, die Kopie auf folgende Weise zu erstellen:
%Vor%Da dies richtig funktioniert, liegt das Problem möglicherweise in der Unveränderbarkeit der Kopie, die ich mit
erhalte %Vor%Erstellen Sie einen neuen, identischen Pfad mit dem CGPath.
%Vor%Die CGPath-Eigenschaft legt Folgendes fest:
Diese Eigenschaft enthält zu jedem Zeitpunkt eine Momentaufnahme des Pfades. Wenn Sie diese Eigenschaft abrufen, wird ein unveränderliches Pfadobjekt zurückgegeben, das Sie an Core Graphics-Funktionen übergeben können.
Tags und Links objective-c cocoa drawing uibezierpath copy