iOS 图片擦除

  • 业务逻辑:上下两张图片,上方的图片遮盖下方的图片,为上方图片添加手势,根据手势的位置创建一个擦除的小块,然后开启位图,渲染被擦除的图层,清除掉pan手势划过的区域,得到上下文的位图,最后关闭上下文,将新的图片赋值给被擦除的图片。
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    
    [self.view addGestureRecognizer:pan];
}

#define clipWH 30
- (void)pan:(UIPanGestureRecognizer *)pan
{
    // 获取当前触摸点
    CGPoint curP = [pan locationInView:self.view];
    
    // 获取擦除的矩形范围
    CGFloat wh = clipWH;
    CGFloat x = curP.x - wh * 0.5;
    CGFloat y = curP.y - wh * 0.5;
    CGRect rect = CGRectMake(x, y, wh, wh);
    
    // 开启位图上下文
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
    // 获取当前上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext(
    
    // 渲染控件
    [self.imageView.layer renderInContext:ctx];
    // 擦除上下文的某一部分
    CGContextClearRect(ctx, rect);
    // 生成一张图片
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    self.imageView.image = image;
    // 关闭上下文
    UIGraphicsEndImageContext(); 
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.圆形图片裁剪 目标明确: 得到一张图片 (=> 位图上下文,手动开启和关闭,代码位置任意)思路:先设置好位图上...
    夏天不冷阅读 4,237评论 0 1
  • Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低...
    ShanJiJi阅读 5,557评论 0 20
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,722评论 6 30
  • Demo地址 业务逻辑:上下两张图片,上方遮盖,下方擦除之后想要显示的图片,为上方图片添加手势,根据手势的位置创建...
    Mitchell阅读 4,918评论 0 1
  • 1.叹不过童真与昨日的霓裳,舞不动萧杀与墓道的昏黄。卸下了红妆,用怒放,换上狂妄。 多少年后,吴邪满面风尘,多少年...
    若水a琉璃阅读 3,602评论 0 0

友情链接更多精彩内容