1

我正在尝试 SwiftUI,虽然我发现它的许多功能非常优雅,但我在动画和过渡方面遇到了麻烦。目前,我有类似的东西

if shouldShowText { Text(str).animation(.default).transition(AnyTransition.opacity.animation(.easeInOut)) }

这个标签确实可以正确过渡,但是当它应该移动时(例如,当上面的另一个视图被隐藏时)它不会像我预期的那样动画,而是跳到适当的位置。我注意到将所有内容包装在一个HStack作品中,但我不明白为什么这是必要的,我希望那里有更好的解决方案。

谢谢

4

1 回答 1

1

如果我正确理解并重建了您的场景,您需要使用显式withAnimation(取决于“上方视图”或两者的需求),如下所示

struct SimpleTest: View {

    @State var shouldShowText = false
    @State var shouldShowAbove = true
    var body: some View {
        VStack {
            HStack
            {
                Button("ShowTested") { withAnimation { self.shouldShowText.toggle() } }
                Button("HideAbove") { withAnimation { self.shouldShowAbove.toggle() } }
            }
            Divider()
            if shouldShowAbove {
                Text("Just some above text").padding()
            }
            if shouldShowText {
                Text("Tested Text").animation(.default).transition(AnyTransition.opacity.animation(.easeInOut))
            }
        }
    }
}
于 2020-01-13T06:07:25.840 回答