нарисовать линию от неподвижной точки до движущейся точки на iphone - PullRequest
1 голос
/ 23 октября 2010

Как я могу нарисовать линию между одной точкой (центр одного UIView) к точке, которая перемещается (местоположение касания), и линия перемещает 2-ю точку при перемещении касания.

Ответы [ 2 ]

5 голосов
/ 23 октября 2010

В вашем пользовательском представлении:

  • in touchesMoved: withEvent сохраняет текущую точку в переменной и вызывает [self setNeedsDisplay], чтобы представление перерисовывалось
  • реализовать рисование линии в drawRect:, использовать базовую графику для рисования линии

Допустим, вы сохраняете точку касания в свойстве self.touchedPoint, тогда рисунок может выглядеть так:

@property (nonatomic, assign) CGPoint touchedPoint;

- (void)drawRect:(CGRect)rect
{
 CGContextRef context = UIGraphicsGetCurrentContext();       
 CGContextSaveGState(context);

 CGContextTranslateCTM(context, 0.0, rect.size.height);
 CGContextScaleCTM(context, 1.0, -1.0);

 CGContextSetShouldAntialias(context, YES);
 CGContextSetLineWidth(context, 1.0f);
 CGContextSetRGBStrokeColor(context, 0.7, 0.7, 0.7, 1.0);

 CGContextMoveToPoint(context, rect.size.width/2, rect.size.height/2);
 CGContextAddLineToPoint(context, self.touchedPoint.x, self.touchedPoint.y);
 CGContextDrawPath(context, kCGPathStroke); 

 CGContextRestoreGState(context);
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.touchedPoint = [[touches anyObject] locationInView:self];
    [self setNeedsDisplay];
}
0 голосов
/ 23 октября 2010

Я проголосовал за ответ Михала.Но я бы также посоветовал посмотреть пример проекта Touches .Его легко запустить - это может быть полезно, если вы все еще просто собираете свой проект.

...