Изображение становится размытым и уменьшается при стирании

Я использую функцию стирания изображения, и мой код выглядит следующим образом. Вы можете посмотреть видео ЗДЕСЬ. Вот current_sticker_img мой Imageview

ПРИМЕЧАНИЕ. Я также использую жест панорамирования для масштабирования изображения.

 //MARK: Eraser touch event
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        if btn_eraser.isSelected == true || btn_repaint.isSelected == true{
            let touch : UITouch = touches.first!
            lastpoint = touch.location(in: current_sticker_img)
        }
    }
    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        if btn_eraser.isSelected == true || btn_repaint.isSelected == true{
            let touch = touches.first!
            let currentPoint : CGPoint = touch.location(in: current_sticker_img)
            let isPointInsideView = current_sticker_img.point(inside: currentPoint, with: event)
            if isPointInsideView
            {
                UIGraphicsBeginImageContext(current_sticker_img.frame.size)
//                UIGraphicsBeginImageContextWithOptions(CGSize(width: (current_sticker_img.image?.size.width)!, height: (current_sticker_img.image?.size.height)!), false, (current_sticker_img.image?.scale)!)

                current_sticker_img
                    .image?.draw(in: CGRect(x: 0, y: 0, width: (current_sticker_img.frame.size.width), height: (current_sticker_img.frame.size.height)))
                UIGraphicsGetCurrentContext()!.setLineCap(.round)
                UIGraphicsGetCurrentContext()?.setLineWidth(Current_slider_value_for_Eraser)

                UIGraphicsGetCurrentContext()?.setShadow(offset: CGSize(width: CGFloat(0), height: CGFloat(0)), blur: 0, color: UIColor.clear.cgColor )
                UIGraphicsGetCurrentContext()!.setBlendMode(.clear)

                UIGraphicsGetCurrentContext()?.move(to: CGPoint(x: CGFloat(lastpoint.x), y: CGFloat(lastpoint.y)))
                UIGraphicsGetCurrentContext()?.addLine(to: CGPoint(x: CGFloat(currentPoint.x), y: CGFloat(currentPoint.y)))
                UIGraphicsGetCurrentContext()!.strokePath()

                current_sticker_img.image = UIGraphicsGetImageFromCurrentImageContext()
                UIGraphicsEndImageContext()
                lastpoint = currentPoint
            }
        }
    }

Что я делаю неправильно? Пожалуйста, помогите мне с этим. Спасибо


person Jitendra Modi    schedule 31.03.2017    source источник
comment
И что делает ваш код, связанный с жестом панорамирования?   -  person cire.boroguies    schedule 06.04.2017
comment
@cire.boroguies просто для увеличения и уменьшения изображения   -  person Jitendra Modi    schedule 07.04.2017
comment
Хорошо, но поскольку ваша проблема, похоже, точно связана с функцией уменьшения масштаба. Пробовали ли вы использовать следующие методы делегирования: функция распознавания жестов (UIGesture, должна распознавать одновременно с: UIGesture, Recognizer) или функция распознавания жестов (UIGesture, должна получать: UITouch)? чтобы убедиться, что жест панорамирования не выполняет никаких действий. И почему вы используете Pan Gesture для масштабирования, а не Pinch Gesture?   -  person cire.boroguies    schedule 07.04.2017
comment
Я использую для этого эту библиотеку cocoacontrols.com/controls/zdstickerview. Эта библиотека дает мне всю работу с изображением. и в этом изображении я использовал ластик   -  person Jitendra Modi    schedule 08.04.2017
comment
Пробовали ли вы установить в StickerView для preventResizing значение YES, чтобы убедиться, что он не из этой библиотеки? Также не могли бы вы зарегистрировать размер изображения current_sticker_img.image до и сразу после строки current_sticker_img.image = UIGraphicsGetImageFromCurrentImageContext()?   -  person cire.boroguies    schedule 10.04.2017
comment
Нет, я не пытался предотвратить изменение размера и не регистрировал currentimage.image, но обязательно попробую @cire.boroguies   -  person Jitendra Modi    schedule 11.04.2017
comment
Я использовал предотвращение изменения размера, но возникает та же проблема, я не хочу, чтобы размер наклейки изменялся, если пользователь хочет увеличить или уменьшить масштаб.   -  person Jitendra Modi    schedule 11.04.2017