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(); 
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.圓形圖片裁剪 目標明確: 得到一張圖片 (=> 位圖上下文,手動開啟和關閉,代碼位置任意)思路:先設置好位圖上...
    夏天不冷閱讀 817評論 0 1
  • Core Graphics Framework是一套基于C的API框架,使用了Quartz作為繪圖引擎。它提供了低...
    ShanJiJi閱讀 1,585評論 0 20
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,557評論 6 30
  • Demo地址 業務邏輯:上下兩張圖片,上方遮蓋,下方擦除之后想要顯示的圖片,為上方圖片添加手勢,根據手勢的位置創建...
    Mitchell閱讀 1,213評論 0 1
  • 1.嘆不過童真與昨日的霓裳,舞不動蕭殺與墓道的昏黃。卸下了紅妝,用怒放,換上狂妄。 多少年后,吳邪滿面風塵,多少年...
    若水a琉璃閱讀 558評論 0 0