如何在SwiftUI中放大滚动视图
我正在尝试在SwiftUI中为Catalyst应用程序缩放和平移图像。虽然没有PanGesture,但ScrollView似乎在iPad和Mac上都能正常工作。我就是无法在放大的图像上滚动如何在SwiftUI中放大滚动视图,swiftui,Swiftui,我正在尝试在SwiftUI中为Catalyst应用程序缩放和平移图像。虽然没有PanGesture,但ScrollView似乎在iPad和Mac上都能正常工作。我就是无法在放大的图像上滚动 struct TestScrollView: View { @State var scale: CGFloat = 1.0 var body: some View { VStack { ScrollView([.horizontal,.vert
struct TestScrollView: View {
@State var scale: CGFloat = 1.0
var body: some View {
VStack {
ScrollView([.horizontal,.vertical], showsIndicators: false) {
Image("image")
.resizable()
}
.gesture(MagnificationGesture()
.onChanged({ (scale) in
self.scale = scale
}))
.scaleEffect(self.scale)
}
}
}
使用下面的代码
ScrollView([.horizontal,.vertical], showsIndicators: false) {
Image("large_image")
.resizable()
.gesture(MagnificationGesture()
.onChanged({ (scale) in
self.scale = scale
}))
.scaleEffect(self.scale)
}
…我明白了:
它似乎向右滚动了很多次,但在左侧被切断。将手势附加到图像上,如
ScrollView([.horizontal,.vertical], showsIndicators: false) {
Image("large_image")
.resizable()
.gesture(MagnificationGesture()
.onChanged({ (scale) in
self.scale = scale
}))
.scaleEffect(self.scale)
}
应用
scaleEffect
后,内容的帧大小似乎保持不变,这就是您无法在ScrollView
内滚动的原因。没有地方可以滚动。可以通过手动指定缩放后的帧大小来修复此问题。如果不知道原始帧大小,请使用GeometryReader
动态缩放后计算帧大小
ScrollView([.horizontal, .vertical], showsIndicators: false) {
Image(systemName: "square.fill")
.resizable()
.frame(width: 200, height: 200)
.scaleEffect(self.scale)
.frame(
width: 200 * self.scale,
height: 200 * self.scale
)
}
.gesture(magnificationGesture)
另外,您的
onChanged
实现也存在一些问题。请参阅James提供的。谢谢,我尝试了您的代码,但它仍然无法按我所希望的方式运行。你能看到我更新的答案并告诉我你是否得到了不同的结果吗?我得到了相同的结果。这个答案有更新吗?