我无法在SwiftUI中找到与Pan手势等效的功能。 我看到并使用了放大,点击,拖动和旋转手势,但是没有看到内置的Pan手势。在下面的代码片段中,我添加了一张图片并允许用户缩放 - 但我希望用户还能移动缩放后的图像以聚焦于感兴趣的区域。当然,拖动手势不能完成这项任务,它只会移动框架。
我尝试将框架叠加在顶部并移动底部图像,但也无法使其工作。
struct ContentView: View {
@State var scale: CGFloat = 1.0
@State var isScaled: Bool = false
@State private var dragOffset = CGSize.zero
var body: some View {
GeometryReader { geo in
VStack {
ZStack{
RoundedRectangle(cornerRadius: 40)
.foregroundColor(Color.white)
.frame(width: geo.size.width - 45, height: geo.size.width - 45)
.shadow(radius: 10)
Image("HuckALaHuckMedium")
.resizable()
.scaleEffect(self.scale)
.frame(width: geo.size.width - 60, height: geo.size.width - 60)
.cornerRadius(40)
.aspectRatio(contentMode: .fill)
.shadow(radius: 10, x: 20, y: 20)
//need pan not drag
.gesture(
DragGesture()
.onChanged { self.dragOffset = $0.translation }
.onEnded { _ in self.dragOffset = .zero }
)
//this works but you can't "zoom twice"
.gesture(MagnificationGesture()
.onChanged { value in
self.scale = self.isScaled ? 1.0 : value.magnitude
}
.onEnded({ value in
//self.scale = 1.0
self.isScaled.toggle()
})
)
.animation(.easeInOut)
.offset(self.dragOffset)
}//zstack
Spacer()
}
}
}
}
一个原始的图像示例:
并且在缩放后的图像 - 但不是平移而是拖动:
任何指导都将不胜感激。Xcode 11.3(11C29)