我正在尝试SwiftUI,尽管我发现它的许多功能都非常优雅,但是在动画和过渡方面却遇到了麻烦。目前,我有类似
if shouldShowText { Text(str).animation(.default).transition(AnyTransition.opacity.animation(.easeInOut)) }
此标签确实可以正确过渡,但是当它应该移动时(例如,隐藏了上面的另一个视图时),它没有像我期望的那样动画,而是跳到了适当位置。我注意到将所有内容都包装在HStack
中是可行的,但是我不知道为什么这样做是必要的,我希望那里有更好的解决方案。
谢谢
答案 0 :(得分: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))
}
}
}
}