Positionieren Sie CGPath / UIBezierPath in View neu

8

Ist es möglich, einen bereits gezeichneten CGPath / UIBezierPath in einer Ansicht neu zu positionieren? Ich möchte die Position eines Pfades verschieben oder ändern und dann vielleicht die draininRect-Methode aufrufen, um die Zeichnung einfach wieder anzuzeigen.

    
Little Tiny Dev 18.06.2013, 12:31
quelle

1 Antwort

19

Aus Ihrer Frage klingt es so, als würden Sie den Pfad mit Core Graphics in drawRect: zeichnen (im Vergleich zur Verwendung von CAShapeLayer ), also erkläre ich zuerst die Version.

Einen CGPath verschieben

Sie können einen neuen Pfad erstellen, indem Sie einen anderen Pfad transformieren. Eine Translationstransformation bewegt das transformierte Objekt um eine bestimmte Distanz in x und y. Mit einer Übersetzungstransformation können Sie also Ihren bestehenden Pfad um eine bestimmte Anzahl von Punkten in x und y verschieben.

%Vor%

Dann könnten Sie movedPath verwenden, um genau so zu zeichnen, wie Sie es bereits tun.

Sie können auch den gleichen Pfad ändern

%Vor%

und einfach neu zeichnen.

Verschieben einer Formebene

Wenn Sie eine Formebene verwenden, ist das Verschieben noch einfacher. Dann müssen Sie nur die Position des Layers mit der Eigenschaft position ändern.

Aktualisierung:

Wenn Sie eine Formebene verwenden möchten, können Sie einfach einen neuen CAShapeLayer erstellen und dessen Pfad als Ihren CGPath festlegen. Dazu benötigen Sie QuartzCore.framework, da CAShapeLayer Teil von Core Animation ist.

%Vor%

Um die Form zu verschieben, ändern Sie einfach ihre Position.

%Vor%     
David Rönnqvist 18.06.2013, 13:41
quelle

Tags und Links