我想允许用户在SwiftUI中用捏合手势进行图像缩放。我觉得最好的方法是使用
这段代码可以很好地处理放大,但不能让用户在特定区域进行缩放。相反,它总是在图像的中间进行缩放。
在SwiftUI中,我该如何处理图像的捏合缩放行为?
MagnificationGesture
,并且根据这里的答案进行操作,最终得到了以下代码:// outside of `var body: some View`
@State private var scale: Int = 1.0
@State private var lastScale: Int = 1.0
// Image
Image("dog")
.resizable()
.aspectRatio(contentMode: .fit)
.gesture(MagnificationGesture()
.onChanged { val in
let delta = val / self.lastScale
self.lastScale = val
let newScale = self.scale * delta
self.scale = newScale
}
.onEnded { _ in
self.lastScale = 1.0
}
)
.scaleEffect(scale)
这段代码可以很好地处理放大,但不能让用户在特定区域进行缩放。相反,它总是在图像的中间进行缩放。
在SwiftUI中,我该如何处理图像的捏合缩放行为?