title: iOS Core Graphics How to erase a drawing
body: <p>I am following this tutorial for my doodle application. </p>
  
  <p><a href="http://www.raywenderlich.com/18840/how-to-make-a-simple-drawing-app-with-uikit" rel="noreferrer">http://www.raywenderlich.com/18840/how-to-make-a-simple-drawing-app-with-uikit</a></p>
  
  <p>his erase function is using white color drawing. But I am using image background and when I erase, I really need to erase. </p>
  
  <p>I have tried             </p>
  
  <pre><code>CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);
  </code></pre>
  
  <p>But it's not working. Here is my code: </p>
  
  <pre><code>- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      _mouseSwiped = NO;
      UITouch *touch = [touches anyObject];
      _lastPoint = [touch locationInView:self.tempImageView];
  }
  
  - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
  
      _mouseSwiped = YES;
      UITouch *touch = [touches anyObject];
      CGPoint currentPoint = [touch locationInView:self.tempImageView];
  
      UIGraphicsBeginImageContext(self.tempImageView.frame.size);
      [self.tempImageView.image drawInRect:CGRectMake(0, 0, self.tempImageView.frame.size.width, self.tempImageView.frame.size.height)];
      CGContextMoveToPoint(UIGraphicsGetCurrentContext(), _lastPoint.x, _lastPoint.y);
      CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
      CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
      CGContextSetLineWidth(UIGraphicsGetCurrentContext(), _width );
  
  
      CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), _red, _green, _blue, 1.0);
  
      if (_isErasing) {
          CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);
      }
      else {
          CGContextSetBlendMode(UIGraphicsGetCurrentContext(),kCGBlendModeNormal);
      }
  
      CGContextStrokePath(UIGraphicsGetCurrentContext());
      self.tempImageView.image = UIGraphicsGetImageFromCurrentImageContext();
      [self.tempImageView setAlpha:_alpha];
      UIGraphicsEndImageContext();
  
      _lastPoint = currentPoint;
  }
  
  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
  
      CGSize size = self.tempImageView.frame.size;
  
      if(!_mouseSwiped) {
          UIGraphicsBeginImageContext(self.tempImageView.frame.size);
          [self.tempImageView.image drawInRect:CGRectMake(0, 0, size.width, size.height)];
          CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
          CGContextSetLineWidth(UIGraphicsGetCurrentContext(), _width);
  
  
          CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), _red, _green, _blue, _alpha);
          CGContextMoveToPoint(UIGraphicsGetCurrentContext(), _lastPoint.x, _lastPoint.y);
          CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), _lastPoint.x, _lastPoint.y);
          CGContextStrokePath(UIGraphicsGetCurrentContext());
          CGContextFlush(UIGraphicsGetCurrentContext());
          self.tempImageView.image = UIGraphicsGetImageFromCurrentImageContext();
          UIGraphicsEndImageContext();
      }
  
  
  
  
      UIGraphicsBeginImageContext(self.drawImageView.frame.size);
      [self.drawImageView.image drawInRect:CGRectMake(0, 0, size.width, size.height) blendMode:kCGBlendModeNormal alpha:1.0];
  
      if (_isErasing) {
          CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);
      }
  
      [self.tempImageView.image drawInRect:CGRectMake(0, 0, self.tempImageView.frame.size.width, self.tempImageView.frame.size.height) blendMode:kCGBlendModeNormal alpha:_alpha];
  
  
      self.drawImageView.image = UIGraphicsGetImageFromCurrentImageContext();
      self.tempImageView.image = nil;
      UIGraphicsEndImageContext();
  }
  </code></pre>