图片擦除

图片擦除实现步骤

  • 加载图片,并添加拖动手势;另外加载一张背景图片,用于图片被擦除后显示,置于擦除图片下方

  • 开启位图上下文(与图片大小一致)

  • 获取当前位图上下文

  • 将图片控件的layer通过renderInContex绘制到位图上下文中

  • 清除上下文中某一部分

  • 从上下文中获取这张图片

  • 关闭上下文

  • 将擦除后的图片显示回控件中

// 加载图片,并添加拖动手势;另外加载一张背景图片,用于图片被擦除后显示,置于擦除图片下方,已通过storyboard实现

//监视拖动
- (IBAction)pan:(UIPanGestureRecognizer *)sender {

// 开启位图上下文
    UIGraphicsBeginImageContextWithOptions(sender.view.bounds.size, NO, 0);

// 获取当前位图上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();

// 渲染控件,相当于控件的layer图层加载到位图上下文中
    [sender.view.layer renderInContext:ctx];

//  清除上下文中某一部分
    //获取当前触摸点
    CGPoint curP =[sender locationInView:sender.view];

    //计算擦除区域
    CGFloat wh = 30;
    CGFloat x = curP.x - wh * 0.5;
    CGFloat y = curP.y - wh * 0.5;
    CGRect clearR = CGRectMake(x, y, wh, wh);

    // 核心代码
    CGContextClearRect(ctx, clearR);

// 从上下文中生成一张图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

// 关闭上下文
    UIGraphicsEndImageContext();

// 将擦除后的图片显示回控件中
    UIImageView *imageV = (UIImageView *)sender.view;
    imageV.image = image;

}

你可能感兴趣的:(图片擦除)