用CGContext绘图

我试图通过touchesMove:方法画线。

以下是我的动作touchesMoved:

 UIGraphicsBeginImageContext(self.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); // context setting CGContextSetLineCap(context, kCGLineCapRound); CGContextSetLineJoin(context, kCGLineJoinRound); CGContextSetLineWidth(context, 2.0); CGContextSetRGBStrokeColor(context, 255, 0, 0, 0.5); CGContextSetBlendMode(context, kCGBlendModeNormal); // drawing CGContextMoveToPoint(context, lastPoint.x, lastPoint.y); CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y); CGContextStrokePath(context); CGContextFlush(context); self.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

touchesMoved:被调用; 但是屏幕上没有显示任何内容。

我错过了什么?

添加

self是UIImageView的子类。

好吧,我发现它为什么不起作用。 我创build了每个触摸移动事件的CGContext 。 我移动了UIGraphicsBeginImageContext(self.frame.size); init方法和UIGraphicsEndImageContext(); 去分配。

这是我如何绘制的代码。

 static CGPoint lastPoint; - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch_ = [touches anyObject]; CGPoint point_ = [touch_ locationInView:self]; lastPoint = point_; CGContextRef context = UIGraphicsGetCurrentContext(); // context setting CGContextSetLineCap(context, kCGLineCapRound); CGContextSetLineJoin(context, kCGLineJoinRound); CGContextSetLineWidth(context, 2.0); CGContextSetRGBStrokeColor(context, 255, 0, 0, 0.5); CGContextSetBlendMode(context, kCGBlendModeNormal); } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { lastPoint = CGPointZero; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; CGPoint currentPoint = [touch locationInView:self]; CGContextRef context = UIGraphicsGetCurrentContext(); // drawing CGContextMoveToPoint(context, lastPoint.x, lastPoint.y); CGContextAddLineToPoint(context, currentPoint.x, currentPoint.y); CGContextStrokePath(context); CGContextFlush(context); self.image = UIGraphicsGetImageFromCurrentImageContext(); lastPoint = currentPoint; }