圖片擦除實現(xiàn)步驟
加載圖片,并添加拖動手勢;另外加載一張背景圖片,用于圖片被擦除后顯示,置于擦除圖片下方
開啟位圖上下文(與圖片大小一致)
獲取當(dāng)前位圖上下文
將圖片控件的layer通過renderInContex繪制到位圖上下文中
清除上下文中某一部分
從上下文中獲取這張圖片
關(guān)閉上下文
將擦除后的圖片顯示回控件中
// 加載圖片,并添加拖動手勢;另外加載一張背景圖片,用于圖片被擦除后顯示,置于擦除圖片下方,已通過storyboard實現(xiàn)
//監(jiān)視拖動
- (IBAction)pan:(UIPanGestureRecognizer *)sender {
// 開啟位圖上下文
UIGraphicsBeginImageContextWithOptions(sender.view.bounds.size, NO, 0);
// 獲取當(dāng)前位圖上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
// 渲染控件,相當(dāng)于控件的layer圖層加載到位圖上下文中
[sender.view.layer renderInContext:ctx];
// 清除上下文中某一部分
//獲取當(dāng)前觸摸點
CGPoint curP =[sender locationInView:sender.view];
//計算擦除區(qū)域
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();
// 關(guān)閉上下文
UIGraphicsEndImageContext();
// 將擦除后的圖片顯示回控件中
UIImageView *imageV = (UIImageView *)sender.view;
imageV.image = image;
}