Ich habe eine rechteckige Ansicht, die vertikale dünne Linien enthält, in denen ich programmatisch zeichnete.iOS - Wie zeichne Punkt auf einer Linie, in der der Benutzer beim Ziehen berührt
Dies ist der Code I verwendet, um die Linien zu zeichnen:
- (void)drawLines
{
CGFloat spacing = _bgView.frame.size.width/11.0f;
for(int i = 1; i < 11; i++)
{
UIView *line = [[UIView alloc] initWithFrame:CGRectMake((CGFloat)(i * spacing), 0, 1, _bgView.frame.size.height)];
line.backgroundColor = [UIColor whiteColor];
line.tag = i;
[_bgView addSubview:line];
}
}
Die Linien, die durch gleichmäßig verteilte Räume von der Breite der rechteckigen Ansicht (_bgView
) berechnet, getrennt sind.
Hier ist ein Überblick, was es sieht aus wie:
Wenn der Benutzer eine Drag in der rechteckigen Ansicht durchführt, und wenn seine/ihre Finger durchlaufen oder eine Linie berühren, wird ein Punkt sein, bezogen auf diesen spezifischen Punkt.
Hier ist der Code, der den Berührungspunkt des Benutzers auf der Linie erkennt und einen Punkt auf diesen Punkt zeichnet.
- (IBAction)drawDots:(id)sender
{
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)sender;
CGPoint pannedPoint = [pan locationInView:_bgView];
for (UIView *subview in _bgView.subviews)
{
if (CGRectContainsPoint(subview.frame, pannedPoint) && subview.tag > 0)
{
NSLog(@"Point x:%.2f y:%.2f TAG:%i", pannedPoint.x, pannedPoint.y, subview.tag);
UIView *point = [[UIView alloc] initWithFrame:CGRectMake(pannedPoint.x - 2.5, pannedPoint.y - 2.5, 5, 5)];
point.backgroundColor = [UIColor redColor];
[_bgView addSubview:point];
}
}
}
, Nun, wenn der Benutzer Pfannen wirklich schnell, das wird das Ergebnis sein:
Wie nur einige Punkte gezogen gesehen werden, das ist, warum viele fehlt es Punkte auf den anderen Zeilen.
Dies sollte Ergebnis zu erwarten:
Aber diese super langsam nur, wenn der Benutzer Pfannen passiert.
Wie kann ich die Punkte in den Linien, die durch die Berührung des Benutzers abgefangen werden, selbst dann zeichnen, wenn sich sein Finger sehr schnell bewegt?
Danke!
Sie Delegatmethode verwenden können es nennen, bevor Aktion der Schwenkbewegung –
@PKT Danke! Ich werde es versuchen. –
@PKT Hallo, ich möchte nur fragen, beziehen Sie sich auf UIGestureRecognizerDelegate?Wenn das der Fall ist, sehe ich keine Delegiertenmethode, die ich verwenden könnte. –