首页 > 解决方案 > SwiftUI AnyTransition.animation 在使用 .offset 时不会覆盖动画参数

问题描述

我有一个视图,我想在其中使用偏移过渡。据我了解,我可以使用 AnyTransition 上的 .animation 函数来覆盖显式动画的动画参数。

在这个简单的示例中,我希望 Rectangle 过渡比移动的文本长 10 倍。

它在使用 AnyTransition.opacity 时有效

使用 AnyTransition.offset 时不起作用

struct MyTestView: View {

    @State var rectangleExists = false

    var body: some View {
        VStack {
            if rectangleExists {
                Rectangle().fill().foregroundColor(.red).padding()
                    //.transition(AnyTransition.opacity
                    .transition(AnyTransition.offset(x: 100, y: 0)
                                    .animation(.linear(duration: 5)))
            }
            Text("Tap Me").onTapGesture {
                withAnimation(.linear(duration: 0.5)) {
                    rectangleExists.toggle()
                }
            }
        }
    }
}

标签: swiftswiftuiswiftui-animation

解决方案


推荐阅读