问题描述
我正在尝试使用 SwiftUI 动画。但是很难找到解决以下问题的方法。
我有一个视图 (ExplicitAnimatedView
),它使用显式动画作为其逻辑。
struct ExplicitAnimatedView: View {
@State private var isAnimating: Bool = false
var body: some View {
Image(systemName: "arrow.up.circle")
.rotationEffect(Angle(degrees: isAnimating ? 360 : 0))
.font(.system(size: 80))
.foregroundColor(.white)
.padding(.all,40)
.background(Color.blue)
.onAppear {
withAnimation(Animation.linear(duration: 3).repeatForever(autoreverses: false)) {
isAnimating = true
}
}
}
}
我在另一个使用隐式动画的视图中使用了这个 ExplicitAnimatedView
。
struct TestView: View {
@State private var showLoading: Bool = false
var body: some View {
vstack {
if (showLoading) {
ExplicitAnimatedView()
.transition(.opacity)
}
Spacer()
Button("Toggle Loading") {
showLoading.toggle()
}
}
.animation(.linear)
}
}
问题是,ExplicitAnimatedView
的显式动画不再有效。它的行为就像显式动画 Animation.linear(duration: 3).repeatForever(autoreverses: false)
被外部视图的隐式动画.animation(.linear)
替换/覆盖。
注意:如果我将 ExplicitAnimatedView
的动画转换为隐式动画,一切正常,没有任何问题。但这不是一个选项,因为 ExplicitAnimatedView
来自我无法修改的第三方库。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)