首页 > 解决方案 > SwiftUI 获取当前旋转值

问题描述

我想从 roation3DEffect 获取当前旋转值(以度为单位)。

如果值通过 -90 ,我想更改文本。

我如何获得价值?

到目前为止,这是我的代码:

@State var rotation = false

[…]

ZStack {
    Rectangle()
        .foregroundColor(.green)

    Text("1")
}
.frame(width: 120, height: 60)
.rotation3DEffect(Angle(degrees: rotation ? -180 : 0), axis: (x: 10, y: 0, z: 0), anchor: .bottom)

.animation(.linear(duration: 0.25))
.onTapGesture {
    self.rotation.toggle()
}

标签: swiftui

解决方案


你可以这样做:

struct ContentView: View {
    @State private var degree = 0.0
    @State private var text = "1"

    var body: some View {

        ZStack {
            Rectangle()
                .foregroundColor(.green)
                Text(text)

        }
        .frame(width: 120, height: 60)
        .rotation3DEffect(Angle(degrees: degree), axis: (x: 10, y: 0, z: 0), anchor: .bottom)

        .onTapGesture {
            DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
                self.text = ""
            }
            withAnimation(.linear(duration: 1)) {
                if self.degree == 0 {
                    self.degree += 180
                } else {
                    self.degree -= 180
                }
            }
        }
    }
}

根据您的评论编辑了我的代码。


推荐阅读