我正在我的 SwiftUI 应用程序中处理缩放和平移主题。我使用以下 View 结构来显示图像
struct PictureDetailView: View {
@State private var zoom: Double
private var image: NSImage
private var minZoom: Double
init(data: Data) {
image = NSImage(data: data)!
let zoom = 600 / Double(image.size.width)
_zoom = State(initialValue: zoom)
minZoom = zoom
}
var body: some View {
VStack {
ScrollView([.horizontal, .vertical]) {
Image(nsImage: image).resizable().scaledToFit().border(.black, width: 2)
.scaleEffect(zoom)
}
Slider(value: $zoom, in: minZoom...5)
}.padding().frame(width: 600, height: 400)
}
}
我面临的困难是,如果图像缩小,它就会从 ScrollView 的可见区域消失,我想知道是否有任何简单的方法如何保持图像始终可见(最好的方法是在 ScrollView 的可见区域中居中)放大或缩小。 谢谢。
如果你想集成平移手势,也许通过
UIScrollView
集成 UIKit 的 UIViewRepresentable
而不是 SwiftUI 的 ScrollView
会更好。这不仅使图像正确居中变得更加容易,而且还配备了集成的平移手势识别器。