79-图片擦除(纯代码)

本文介绍如何使用Objective-C在iOS应用中实现图片擦除功能。通过创建两个UIImageView,其中一个用于显示擦除效果,另一个则接收用户输入并执行擦除操作。利用UIPanGestureRecognizer手势识别来跟踪用户手指移动路径,进而实现实时擦除图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


//  ViewController.m
//  图片擦除(纯代码)
//  如果想要要通过storyboard拖拽方式操作,拖两个imageview
//  其中用于做擦除操作的要连线,并给其拖一个手指移动的手势
#import "ViewController.h"

@interface ViewController ()
 
//保存用于做擦除操作的图片
@property (nonatomic,weakUIImageView *imageView;
@end

@implementation ViewController

- (
void)viewDidLoad {
    [
super viewDidLoad];
    
//1.创建两个imageview
    
    
//用于显示擦除后的图片
    
UIImageView *imageView1=[[UIImageView allocinit];
    imageView1.
image=[UIImage imageNamed:@"2B"];
    
//设置ImageView可以和用户交互
    imageView1.
userInteractionEnabled=NO;
    imageView1.
frame=self.view.bounds;
    [
self.view addSubview:imageView1];
    
    
//用于做擦除操作的图片
    
UIImageView *imageView2=[[UIImageView allocinit];
    imageView2.
image=[UIImage imageNamed:@"2A"];
    imageView2.
frame=self.view.bounds;
    imageView2.
userInteractionEnabled=YES;
    
_imageView=imageView2;
    [
self.view addSubview:imageView2];
    
    
//2.给用于做擦除操作的imageView添加手指移动手势
    
UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer allocinitWithTarget:self action:@selector(pan:)];
    [
_imageView addGestureRecognizer:pan];
}

//3.监听手指移动事件
-(
void) pan:(UIPanGestureRecognizer *)pan
{
    
//获取当前手指位置
    
CGPoint curP=[pan locationInView:_imageView];
    
    
//开启位图上下文
    
UIGraphicsBeginImageContextWithOptions(_imageView.bounds.size,NO0);
    
    
//绘制图片
    [
_imageView.image drawInRect:_imageView.bounds];
    
    
//获取当前上下文
    
CGContextRef ctx=UIGraphicsGetCurrentContext();
    
    
//擦除范围大小
    
CGFloat wh=20;
    
CGRect clearRect= CGRectMake(curP.x, curP.y, wh, wh);
    
    
//擦除图片
    
CGContextClearRect(ctx, clearRect);
    
    
//生成新的图片
    
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
    
    
//关闭上下文
    
UIGraphicsEndImageContext();
    
    
//imageView赋值
    
_imageView.image=image;
}
@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值