如何限制UIPinchGestureRecognizer的缩放范围,使其保持在最小和最大级别之间?(不使用UIScrollView) 我想将最大尺寸设置为图像的宽度和高度。
var pichCenter : CGPoint!
var touchPoint1 : CGPoint!
var touchPoint2 : CGPoint!
let maxScale : CGFloat = 1
var pinchStartImageCenter : CGPoint!
@objc func pinchAction(gesture: UIPinchGestureRecognizer) {
if gesture.state == UIGestureRecognizerState.began {
pinchStartImageCenter = imageView.center
touchPoint1 = gesture.location(ofTouch: 0, in: self.view)
touchPoint2 = gesture.location(ofTouch: 1, in: self.view)
pichCenter = CGPoint(x: (touchPoint1.x + touchPoint2.x) / 2, y: (touchPoint1.y + touchPoint2.y) / 2)
} else if gesture.state == UIGestureRecognizerState.changed {
var pinchScale : CGFloat
if gesture.scale > 1 {
pinchScale = 1 + gesture.scale/100
}else{
pinchScale = gesture.scale
}
if pinchScale*self.imageView.frame.width < editPhotoView.frame.width {
pinchScale = editPhotoView.frame.width/self.imageView.frame.width
}
scaleZoomedInOut *= pinchScale
let newCenter = CGPoint(x: pinchStartImageCenter.x - ((pichCenter.x - pinchStartImageCenter.x) * pinchScale - (pichCenter.x - pinchStartImageCenter.x)),y: pinchStartImageCenter.y - ((pichCenter.y - pinchStartImageCenter.y) * pinchScale - (pichCenter.y - pinchStartImageCenter.y)))
self.imageView.frame.size = CGSize(width: pinchScale*self.imageView.frame.width, height: pinchScale*self.imageView.frame.height)
imageView.center = newCenter
}
}