我希望有人能帮帮我。我正在尝试允许用户在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
}
}
14条答案
按热度按时间aor9mmx11#
UIImageView使用UIScrollView缩小缩放||SWIFT 3和Xcode 8字母中的iOS图像缩放Youtube video URL
在情节提要中设置uiscrollview代理
57hvy0tb2#
我决定将ImageView添加到UIScrollView中。它允许用户进行缩放和平移。以下是我使用的代码。
为了设置我使用的最大/最小缩放:
以下是代码的其余部分。
我还必须加上这一点
SWIFT 3及以上功能原型
pxy2qtax3#
支持SWIFT 5.1,可以创建
UIImageView
的扩展,如下所示:5uzkadbs4#
SWIFT 4的选项
e37o9pze5#
您可以使用开源的ImageScrollView,这是一种可缩放和可滚动的图像视图。http://github.com/huynguyencong/ImageScrollView
像这个开源软件一样,将ImageView添加到ScrollView中
oalqel3c6#
在使用SWIFT 5.0时,以下是它对我的作用:
您可以使用scale.a、scale.b、scale.c、scale.d、scale.tx和scale.ty来设置缩放限制。
34gzjxbg7#
在我看来,问题在于您对CurrentScale的决心。它始终等于1,因为您更改了ImageView的比例。您应该按如下方式分配您的CurentScale:
xsuvu9jc8#
SWIFT 3解决方案
默认情况下,禁用
UIImageView's``userInteration
。在UIImageView
中添加任何手势之前启用它。imgView.isUserInteractionEnabled = true
相对于屏幕坐标中两个接触点的比例系数
0s7z1bwu9#
SWIFT 3解决方案
这是我用过的代码。我将ImageView作为子视图添加到ScrollView中。
yzuktlbb10#
我发布了一个答案here,用于在Swift 3中使用按压和双击的缩放功能。效果非常好。
noj0wjuj11#
我认为最大的问题是在
func
的末尾,你有sender.scale = 1
。如果您删除了这行代码,您的图像应该不会每次都反弹回来。z5btuh9x12#
这是一个老问题,但我没有看到任何解释原始代码错误的答案。
这一行:
正在处理主视图而不是ImageView,因此比例计算始终为~1
这一简单的更改使它的行为符合预期
通过将自身更改为发送者(并强制视图展开),比例计算按预期工作。
67up9zun13#
我最终来到了这里,可能找错了方向。
我在内容模式=.center中使用了我的ImageView。但我认为它太放大了,我正在寻找一种方法来缩小它。以下是方法:
1就好像你在做任何事情。超过1将缩小...3对我来说很好用,但你需要测试一下。
xmd2e60i14#
[2022年9月,SWIFT 5]
其中一种方法似乎对我来说很好用,那就是将图像视图嵌入到滚动视图中,您可以快速查看我共享的库,以便更好地理解,以简短地回答这个问题。我已经建立了这个小库,并将其用于生产应用程序。您可以将文件安装或直接复制粘贴到您的项目中。它很容易作为UIView使用,并在需要时听取其委托以获得更多选项。
该库名为Interactive ImageView,支持iOS 11.0及更高版本,链接至GitHub:https://github.com/egzonpllana/InteractiveImageView