原理:
双层imageView,顶部imageview添加拖动手势,清除顶部imageview的上下文时会让该部分透明,可以看到下层的图片,彩票刮奖也是类似的效果
@objc func panGestureRecognizer(_ sender: UIPanGestureRecognizer) {
//获得当前触摸点
let curPoint = sender.location(in: sender.view)
//确定擦除区域
let w : CGFloat = 50
let h : CGFloat = 50
let clearRect = CGRect(x: curPoint.x - w / 2, y: curPoint.y - h / 2, width: w, height: h)
//开启位图上下文
UIGraphicsBeginImageContextWithOptions(sender.view!.frame.size, false, 0)
//获取当前上下文
let ctx = UIGraphicsGetCurrentContext()
//渲染控件
sender.view?.layer.render(in: ctx!)
//清除上下文某一部分
ctx?.clear(clearRect)
//从上下文中生成一张图片
let image = UIGraphicsGetImageFromCurrentImageContext()
//关闭上下文
UIGraphicsEndImageContext()
self.imageView.image = image
}
网友评论