我希望有人可以帮助我 . 我试图允许用户在UIImageView上捏缩放(允许最大和最小级别) . 但由于某种原因,它不能正常工作 . 图像缩放一点,然后反弹回来 . 谢谢 .
这是缩放功能
func zoom(sender:UIPinchGestureRecognizer) {
if sender.state == .Ended || sender.state == .Changed {
let currentScale = self.view.frame.size.width / self.view.bounds.size.width
var newScale = currentScale*sender.scale
if newScale < 1 {
newScale = 1
}
if newScale > 9 {
newScale = 9
}
let transform = CGAffineTransformMakeScale(newScale, newScale)
self.imageView?.transform = transform
sender.scale = 1
}
}
11 回答
UIImageView pinch zoom with UIScrollView || image zooming ios in swift 3 and Xcode 8 letter Youtube video URL
设置uiscrollview在故事板中委派
我决定将imageView添加到UIScrollView . 它允许用户缩放和平移 . 这是我使用的代码 .
为了设置我使用的最大/最小缩放:
这是代码的其余部分 .
我也必须添加它
Swift 3 & above function prototype
swift 4的选项
在我看来,问题是你对currentScale的确定 . 它总是等于1,因为你改变了imageView的比例 . 您应该按如下方式分配currentScale:
您可以使用ImageScrollView开源,可缩放和可滚动的图像视图 . http://github.com/huynguyencong/ImageScrollView
像这个开源一样,将ImageView添加到ScrollView
Swift 3解决方案
默认情况下,
UIImageView's
userInteration
被禁用 . 在UIImageView
中添加任何手势之前启用它 .imgView.isUserInteractionEnabled = true
Swift 3解决方案
这是我使用的代码 . 我将imageView添加到scrollView作为子视图 .
我认为最大的问题是在
func
结束时,你有sender.scale = 1
. 如果删除该行代码,则您的图片不应每次都反弹 .我在Swift 3中发布了一个用于缩放和双击的缩放功能的答案here . 完美无缺 .
这是一个老问题,但我没有看到任何解释原始代码有什么问题的答案 .
这一行:
正在处理主视图而不是imageView,因此比例计算总是〜1
这个简单的更改使其行为符合预期
通过将self更改为发送者(以及强制视图解包),缩放计算按预期工作 .
我最终到了这里,可能是以错误的方式搜寻的 .
我在contentMode = .centre中使用了我的imageView . 但我判断它太大了,我正在寻找一种方法来缩小它 . 这是如何做:
1就像你在做任何事情一样 . 更多,1缩小... 3适合我,但你需要测试它 .