我目前正在Swift 3.0中构建一个照片过滤器,让用户可以通过平移对部分图像进行像素化处理。
为此,我首先将图像像素化,将其放入我显示的UIImageView中;然后我在顶部显示原始图像,并使用链接到"擦除"的panGestureRecognizer。擦除顶部图像部分的功能,让用户看到背后的像素化版本。
我的问题
这里的一切正常,我唯一的问题是,当pan开始时,顶部图像会被调整大小(实际上看起来它的contentMode正在切换到scaleAspectFit而不是scaleAspectFill)。
我的代码
func eraseBetween(fromPoint: CGPoint, currentPoint: CGPoint, imageView: UIImageView) {
UIGraphicsBeginImageContextWithOptions(CGSize(width: imageView.frame.width , height: imageView.frame.height ), false, 0.0)
imageView.image?.draw(in: imageView.bounds)
let path = CGMutablePath()
path.move(to: fromPoint)
path.addLine(to: currentPoint)
let context = UIGraphicsGetCurrentContext()!
context.setShouldAntialias(true)
context.setLineCap(lineType)
context.setLineWidth(lineWidth)
context.setBlendMode(.clear)
context.addPath(path)
context.strokePath()
imageView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
看起来像什么
到目前为止我尝试了什么
我尝试使用UIGraphicsBeginImageContextWithOptions的选项:没有结果
我尝试在eraseBetween函数中重新定义contentMode:无结果
现在我不知道了!
问题
有人帮我吗?非常感谢!