我希望能够在SwiftUI中调整图像的大小和移动(就像是一张 map 一样),并通过收缩来zoom 和拖动图像.
使用UIKit,我将图像嵌入到了一个UIScrollView
中,它处理了它,但我不知道如何在SwiftUI中实现它.
我已经搜索了一段时间了,有人知道有没有更简单的方法吗?
我希望能够在SwiftUI中调整图像的大小和移动(就像是一张 map 一样),并通过收缩来zoom 和拖动图像.
使用UIKit,我将图像嵌入到了一个UIScrollView
中,它处理了它,但我不知道如何在SwiftUI中实现它.
我已经搜索了一段时间了,有人知道有没有更简单的方法吗?
SwiftUI API在这里没有什么帮助:onChanged给出了当前zoom 手势开始的相关数字,并且在回调中没有明显的方法来获取初始值.还有一个统一的回调,但很容易错过/忘记.
A解决方法,添加:
@State var lastScaleValue: CGFloat = 1.0
然后在回调中:
.gesture(MagnificationGesture().onChanged { val in
let delta = val / self.lastScaleValue
self.lastScaleValue = val
let newScale = self.scale * delta
//... anything else e.g. clamping the newScale
}.onEnded { val in
// without this the next gesture will be broken
self.lastScaleValue = 1.0
}
其中newScale是您自己的规模跟踪(可能是状态或绑定).如果你直接设置你的刻度,它会变得一团糟,因为在每一个刻度上,数值都会与之前的数值相对.