如何使用点击手势来偏移图像或形状视图

How to use tap gesture to offset an image or shape view

我正在尝试使用 SwiftUI 来制作它,这样如果我点击一个圆圈、图像或类似的东西,它就会偏移到某个位置,如果我再次点击,它就会消失回到该位置,并同样地前后切换。我找到了一个教我如何切换背景颜色的教程。 https://www.ioscreator.com/tutorials/swiftui-gesture-tutorial。如果你懒得看,本质上代码是这样的:

struct ContentView: View {
    // 1.
    @State private var didTap: Bool = false

    var body: some View {
        // 2.
        Text("Tap me")
            .frame(minWidth:0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
            // 3.
            .gesture(TapGesture()
                .onEnded {
                    self.didTap.toggle()
                }
            )
            // 4.
            .background(didTap ? Color.blue : Color.red)
    }
}

我改变了

Text("Tap me")
    .frame(minWidth:0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)

Circle()
    .frame(width: 100, height: 100)
    .foregroundColor(Color.red)

我想知道是否有办法做到这一点,所以我可以将 TapGesture 布尔变量合并到 .offset(x: __, y: __) 而不是 .background(didTap ? Color.blue : Color.red) 不知何故。

我希望这是您正在寻找的解决方案,而且我已经更改了您添加点击手势的方式。

struct TestView: View {
    @State private var didTap: Bool = false

    private var xOffset: CGFloat {
        return didTap ? 10.0 : 0.0
    }

    var body: some View {
        // 2.
        Circle()
            .frame(width: 100, height: 100)
            .foregroundColor(Color.red)
            .onTapGesture {
                self.didTap.toggle()
        }
            //The x-offset depends on didTap State
            .offset(x: xOffset, y: 0.0)
    }}