Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 偏移量不';ONTAPPORATE-SwiftUI后无法重置_Ios_Swift_Animation_Swiftui - Fatal编程技术网

Ios 偏移量不';ONTAPPORATE-SwiftUI后无法重置

Ios 偏移量不';ONTAPPORATE-SwiftUI后无法重置,ios,swift,animation,swiftui,Ios,Swift,Animation,Swiftui,我试图创建一张卡片,当它被点击时,它会滑动,然后返回到原来的位置而不再点击 点击手势的.onEnded()函数不起作用 这是测试代码 struct ContentView: View { @State var tapped = false var body: some View { VStack { ZStack { Rectangle() .fill(Color.green) .f

我试图创建一张卡片,当它被点击时,它会滑动,然后返回到原来的位置而不再点击 点击手势的.onEnded()函数不起作用

这是测试代码

struct ContentView: View {

@State var tapped = false
var body: some View {
    VStack {
        ZStack {
            Rectangle()
                .fill(Color.green)
                .frame(height: 300)
            
            Rectangle()
                .fill(Color.red)
                .frame(width: 290, height: 64)
                .offset(y: tapped ? 118 : 0)
                .onTapGesture {
                    self.tapped.toggle()
            }
            .animation(.easeInOut)
        }
        
        Spacer()
    }.edgesIgnoringSafeArea(.all)
}

}

应用的属性不会自行神奇地重置-您需要在需要时更改它们

这是最简单的解决方案。使用Xcode 11.4/iOS 13.4进行测试


应用的属性不会自行神奇地重置-您需要在需要时更改它们

这是最简单的解决方案。使用Xcode 11.4/iOS 13.4进行测试

var body: some View {
    VStack {
        ZStack {
            Rectangle()
                .fill(Color.green)
                .frame(height: 300)

            Rectangle()
                .fill(Color.red)
                .frame(width: 290, height: 64)
                .offset(y: tapped ? 118 : 0)
                .onTapGesture {
                    self.tapped.toggle()
                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                        self.tapped.toggle()
                    }
            }
            .animation(Animation.easeInOut(duration: 0.5))
        }

        Spacer()
    }.edgesIgnoringSafeArea(.all)
}