2016-07-20 21 views
0

Ich benutze UIBezierpath, um einen Punkt auf meiner UIView zu zeichnen. Ich folgte diesem Link für das gleiche.Ich kann keinen einzelnen Punkt löschen, der von UIBezierpfad gezogen wurde. Pfad

How can i draw a dot on the screen on touchesEnded using UIBezierpath

Nun, wenn ich damit fertig bin, ich bin in der Lage „Punkte“ so viel hinzufügen, wie ich kann. und diese Punkte zu einem Array hinzufügen und sie auf UIView zeigen.

Wenn ich das Array nach Auswahl des Radiergummis reinige, werden alle Punkte gelöscht. Ich kann keinen einzelnen/bestimmten Punkt löschen.

Dies ist die Methode, mit der Punkte zu einem Array hinzugefügt und in UIView angezeigt werden.

- (void)drawRect:(CGRect)rect 
{ 
    [incrementalImage drawInRect:rect]; 
     for (int i = 0; arrayOfDots.count>i;i++) 
     { 
      UIBezierPath *path = [arrayOfDots objectAtIndex:i]; 
      UIColor *color = [arrayOfDotColor objectAtIndex:i]; 
      [color setFill]; 
      [path fill]; 
     } 
} 

Ich habe Radiergummi die Dinge auf UIView gezeichnet zu reinigen. Ich bin in der Lage, die mit UIBezierpath gezeichneten Linien zu säubern, aber ich bin nicht in der Lage, den gezeichneten Punkt mit demselben UIBezierpath zu löschen.

Radiergummi ist nichts anderes, ich nehme nur die weiße Farbe und zeichne die gleiche weiße Farbe auf meiner aktuellen Ansicht.

Hier ist der Code für Radiergummi.

self.strockColour = [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0f]; 

[objBezierpath setLineWidth:25]; 

Kann mir jemand für das gleiche auf wie bestimmte ausgewählte Punkt löschen.

Vielen Dank im Voraus.

Antwort

1

Wenn ich Ihr Codefragment richtig verstanden habe, instanziieren Sie ein neues UIBezierPath-Objekt für jeden Punkt im Array.

Wenn Sie also einen gegebenen Punkt löschen möchten, müssen Sie das Array von Punkten veränderbar machen, und Sie müssen das tatsächliche Pfadobjekt aus dem Array löschen.

Ich schlage vor, dass Sie ein einzelnes UIBezierPath-Objekt erstellen und ein Array haben, das nur die CGPoints speichert.