我可以为插入视图和删除视图指定不同的转换:

.transition(
    .asymmetric(
        insertion: .move(edge: .leading)
        removal: .move(edge: .trailing)
    )
)

这很好用.然而,我希望它这么容易在快速,当它被添加,并缓解缓慢时删除.尽管编译得很好,但下面的代码似乎没有做任何事情.

.transition(
    .asymmetric(
        insertion: .move(edge: .leading)
            .animation(.easeIn(duration: 2)),
        removal: .move(edge: .trailing)
            .animation(.easeOut(duration: 5))
    )
)

我是否误解了.animation作为过渡修饰语的用法?

演示代码:

struct TestView: View {
    @State private var showDetails = false

    var body: some View {
        VStack {
            Button("Press to show details") {
                withAnimation {
                    showDetails.toggle()
                }
            }

            if showDetails {
                Text("Details go here.")
                    .background(Color.blue)
                    .transition(
                        .asymmetric(
                            insertion: .move(edge: .leading)
                                .animation(.easeIn(duration: 5)),
                            removal: .move(edge: .trailing)
                                .animation(.easeOut(duration: 5))
                        )
                    )
            }
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
    }
}

推荐答案

这是我发现有用的东西.在每个方向上使用不同的withAnimation呼叫:

Button("Press to show details") {
    if !showDetails {
        withAnimation(.easeIn(duration: 2)) {
            showDetails.toggle()
        }
    } else {
        withAnimation(.easeOut(duration: 5)) {
            showDetails.toggle()
        }
    }
}

Swift相关问答推荐

如何在一个角色隔离类上编写自定义==实现?

有没有一种方法可以迭代可编码的代码(例如,JSON解析中的每一项)?

如何在visionOS中定制悬停效果区域

String.Index encodedOffset已弃用,但建议的替代方案不起作用

MacOS 13-如何使用SwiftUI创建Message.App设置工具栏?

在NavigationStack上设置拐角半径:SwiftUI中的无响应内容视图区

为什么我的Swift app不能用xcodebuild构建,但是用XCode可以构建?

如何制作一个在 SceneKit 中投射阴影的透明物体?

Swift // Sprite Kit:类别位掩码限制

用逻辑运算符保护让

闭包 - deinit self 对象的时间

关联满足约束时的快速协议方法

SwiftUI View Builder 参数无法更改状态

试图同时实现两个混合过渡

在 Swift 中,如何查看 Process() 传递给 shell 的字符串?

swift : 具有类型和值的枚举常量

UICollectionView 自定义单元格在 Swift 中填充宽度

Swift 中惰性 var 的优势是什么

在 Swiftui 中是否有一种简单的方法可以通过捏合来放大图像?

通过单击表格视图中的单元格打开新的视图控制器 - Swift iOS