Ich habe eine UIImageView. Darin zeichne ich eine Zeile mit User-Touch-Event. Problem ist, dass eine Linie irgendwo in UIImageview
gezeichnet werden kann, aber ich mag nur eine Linie mit Bildmuster zeichnen.
Sieh dir beispielsweise dieses Bild an. Ich muss nur eine Linie auf dem Bildmuster zeichnen.
Das ist mein Code:
%Vor%Ich hoffe, dass jemand mein Problem löst.
Du kannst es auf diese Weise versuchen.
Nehmen wir an, Sie haben eine bezierPath
namens maskPath
, in meinem Fall ist es textPath
, die verwendet wird, um die imageView
zu maskieren.
Ich verwende ein einfaches maskView
, das den Buchstaben Q auf imageView
zeichnet.
Hinzufügen von maskPath
: (Fügt dem imageView eine einfache Q-förmige Maske hinzu)
Sie haben bereits die Methode:
%Vor% Sie können jetzt überprüfen, ob sich der Berührungspunkt in der textPath
befindet, die bezierPath
ist.
Wenn der touchPoint in textPath
ist, dann erlaube das Zeichnen, ansonsten zeichne nicht.
Das Ergebnis wird etwa so aussehen:
Wie Sie sehen, erlaubt Ihnen dieser Code, nur im maskierten Pfad zu zeichnen.
Wenn Sie außerhalb von textPath
zeichnen möchten, können Sie einfach Folgendes tun:
Hinweis: Sie müssen auf Ihre Berührungsmethode beim Zeichnen der Linie achten. Als Bezier-Pfadmethode fügt addLineToPoint
dem TouchPoint eine Zeile hinzu und diese Zeile kann den maskiertenPfad kreuzen. Sie müssen sicherstellen, dass Sie sich in der Nähe des vorherigen Bezier-Pfads befinden und einen neuen beginnen, um zu vermeiden, dass die Linien auf dem äußeren Teil des maskierten Bereichs gezeichnet werden.
Ich nehme an, dass Sie versuchen, Alphabete in einer Sprache anzuzeigen, möglicherweise können Sie diese Sprache Schriftart für die dynamische Anzeige verwenden. Nur ein Gedanke. Zusammen mit der oben genannten Logik können Sie das versuchen.
Tags und Links objective-c ios uiimageview cashapelayer uigesturerecognizer