2010-10-22 2 views

ответ

5

В пользовательской точки зрения:

  • в 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

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

Смежные вопросы