2010-10-22 5 views

Répondre

5

Dans votre vue personnalisée:

  • dans touchesMoved: magasin withEvent point courant dans une variable, et appeler [self setNeedsDisplay] de telle sorte que la vue se redessiner
  • mettre en œuvre le dessin d'une ligne dans drawRect:, graphiques utilisation de base pour tracer une ligne

Disons que vous stockez le point touché dans la propriété self.touchedPoint, puis le dessin pourrait ressembler à ceci:

@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

J'ai voté pour la réponse de Michal. Mais je suggère également de regarder le projet exemple Touches. Il est facile de le faire fonctionner, ce qui peut être utile si vous ne faites que préparer votre projet.

Questions connexes