我要制作动画视图,单击后它将旋转。
像这样:
struct AnimatedView: View {
@State var degree: Double = 0.0
var body: some View {
ZStack {
Image("picture")
.rotationEffect(.degrees(degree))
.animation(
Animation.linear(duration: 2)
)
Button(action: {
self.degree = 180.0
}) {
Text("animate").frame(width: 100, height: 100)
}
}
}
func active() {
self.degree = 180.0
}
}
我将此视图放置在ContentView中,并且希望通过不在该视图中的其他按钮激活动画。
我发现功能有效无法更改度值,因此动画无法开始。
我知道在ContentView中使用@Blinding保持度变量可能有效,但是我不希望在其中使用太多变量。
答案 0 :(得分:0)
如您所说,您需要使用@Binding
,即
struct ContentView: View {
@State private var degree: Double = 0.0
var body: some View {
VStack {
AnimatedView(degree: $degree)
Button(action: {
self.degree += 180.0
}) {
Text("animate")
}
}
}
}
struct AnimatedView: View {
@Binding var degree: Double
var body: some View {
Image(systemName: "checkmark")
.rotationEffect(.degrees(degree))
.animation(
Animation.linear(duration: 2)
)
}
}