Стирание на изображении жестом


#1

Задача
Нужно пальцем стирать участок на изображении ( 4 поинта )

Пример

Все попытки приводи что картинка вся уходила в альфа канал


#2

А если просто поверх картинки рисовать белым?


#3

Вот белым не вариант.
Нужно сделать именно прозрачным
Под картинкой будет другая картинка
( как в моментальной лотереи когда монеткой стираешь )


#4

Есть такой вариант:

@objc func panRecognizer(_ recognizer: UIPanGestureRecognizer) {
    guard image != nil else { return }
    let location = recognizer.location(in: imageView)
    imageView.image = drawToImage(image!, point: location)
}

func drawToImage(_ image: UIImage, point: CGPoint) -> UIImage {
    UIGraphicsBeginImageContext(image.size)
    image.draw(at: CGPoint.zero)
    let context: CGContext = UIGraphicsGetCurrentContext()!
    let bez = UIBezierPath(rect: CGRect(x: point.x, y: point.y, width: 10, height: 10))
    context.addPath(bez.cgPath)
    context.clip()
    context.clear(CGRect(x: 0,y: 0,width: image.size.width,height: image.size.height))
    let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
    UIGraphicsEndImageContext()
    self.image = newImage
    return newImage
}

Но вот тут есть проблемы

  1. В зависимости от размера картинки - ползунок опережает палец
  2. Если быстро вести - то будет не сплошная линия, а прерывистая