gpt4 book ai didi

ios - 如何限制 UIPinchGestureRecognizer 中捏合缩放的最大/最小比例

转载 作者:行者123 更新时间:2023-11-28 05:52:24 25 4
gpt4 key购买 nike

我如何才能将 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
}
}

最佳答案

如果您有最大尺寸,那么只需将它与最大尺寸进行比较并设置新尺寸即可。

在设置新帧之前,请检查该值是否超过最大值或小于最小值。如果是这样,请不要更改框架。

let newWidth = pinchScale * self.imageView.frame.width
let newHeight = pinchScale * self.imageView.frame.height

// You need to have the maximum and minimum values for comparison already stored
if (newWidth >= minimumWidth && newWidth <= maximumHeight) && (newHeight >= minimumHeight && newHeight <= maximumHeight) {
imageView.frame.size = CGSize(width: newWidth, height: newHeight)
}

注意:您可能希望将相同的逻辑应用于在捏合过程中发生变化的其他事物,例如中心。

关于ios - 如何限制 UIPinchGestureRecognizer 中捏合缩放的最大/最小比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52476885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com