swiftUI如何禁用按钮2秒钟?

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

我有一个错误,如果我在卡片翻转之前在动画之前单击按钮。我认为对我来说最好的办法是将按钮禁用2秒钟,但我进行了一些研究,但没有发现任何东西!

struct CardBack: View {
    var body: some View {

      Image("back_card")
        .resizable()
        .aspectRatio(contentMode: .fit)
        .frame(width: 250)
    }
}  

struct ContentView: View {

   @State var flipped = false

   @State private var cardsFront = ["bigCard1", "bigCard2", "bigCard3", "bigCard4", "bigCard5" ]

   @State private var cardBack = "back_card"

    @State private var disablled = true

    var body: some View {
        VStack {
            Spacer()
            ZStack {

            Image(flipped ? self.cardsFront.randomElement()! : self.cardBack)
              .resizable()
              .aspectRatio(contentMode: .fit)
              .frame(width: 250)
              .rotation3DEffect(Angle(degrees: flipped ? 180 : 0 ), axis: (x: 0, y: 1, z: 0))
            }

            Spacer()
            HStack {
                Button(action: {
                    withAnimation(.spring()) {
                        self.flipped.toggle()
                    }
                    DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                        withAnimation(.spring()) {
                            self.flipped.toggle()
                        }
                    }

                }) {
                    Image("circle")
                        .renderingMode(.original)
                }


                Button(action: {

                }) {
                    Image("plus")
                        .renderingMode(.original)
                }
button swiftui disable
1个回答
0
投票

iOS 13,Swift 5

您可以先将按钮设置为禁用,然后使用与此处相同的逻辑将其启用。

导入SwiftUI

struct ContentView: View {
@State var changeColor = false

var body: some View {
    TextView(changeColor: $changeColor)
}
}

struct TextView: View {
@Binding var changeColor: Bool
var body: some View {

Text("Hello World")
    .foregroundColor(changeColor ? Color.black: Color.red)
    .onAppear {
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            self.changeColor.toggle()
        }
    }
}
}

您快到了,只需要在代码中使用.appear标记即可。

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