我正在尝试 SwiftUI,虽然我发现它的许多功能非常优雅,但我在动画和过渡方面遇到了麻烦。目前,我有类似的东西
if shouldShowText { Text(str).animation(.default).transition(AnyTransition.opacity.animation(.easeInOut)) }
这个标签确实可以正确转换,但是当它应该移动时(例如,当上面的另一个 View 被隐藏时)它不会像我预期的那样进行动画处理,而是跳到适当的位置。我注意到将所有内容包装在 HStack
中是可行的,但我不明白为什么这是必要的,我希望有更好的解决方案。
谢谢
最佳答案
如果我正确理解并重建了您的场景,您需要使用显式的 withAnimation
(取决于“上方 View ”或两者的需求),如下所示
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))
}
}
}
}
关于swift - 如何使用 SwiftUI 对可隐藏 View 进行动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709632/