如何在ScrollView中缩放和平移图像

问题描述 投票:0回答:1

我正在我的 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 的可见区域中居中)放大或缩小。 谢谢。

image swiftui scrollview pinchzoom
1个回答
0
投票

如果你想集成平移手势,也许通过

UIScrollView
集成 UIKit 的
UIViewRepresentable
而不是 SwiftUI 的
ScrollView
会更好。这不仅使图像正确居中变得更加容易,而且还配备了集成的平移手势识别器。

SwiftUI 的 UIScrollView

© www.soinside.com 2019 - 2024. All rights reserved.