如何解决从外部观看触发动画
我要制作动画视图,单击后它将旋转。
像这样:
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保持度变量可能有效,但是我不希望在其中使用太多变量。
解决方法
如您所说,您需要使用@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)
)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。