swift - 如何使用 SwiftUI 对可隐藏 View 进行动画处理?

标签 swift swiftui swiftui-animation

我正在尝试 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/

相关文章:

ios - 一次在 TextField 中键入时更改 Text 的值,而无需单击任何位置 - SwiftUI

ios - 如何获取从 Storyboard实例化的 UIButton 类中的 View Controller 实例

swift - 点击标签进入下一页

ios - 跟踪将 iOS 小部件添加到主屏幕的用户的分析

slider - 通过点击它来设置 SwiftUI slider 的值

ios - 防止 SwiftUI 动画覆盖嵌套的 withAnimation block

swift - 如何在 SwiftUI 中保持过渡动画相同的标识

ios - 导航栏按钮图像像素化

swift - 如何使用 Swift 制作随机颜色

animation - 禁用 SwiftUI 框架动画出现