繁体   English   中英

如何使动画在 SwiftUI 的 ScrollView 中工作? SwiftUI 中的手风琴风格 animation

[英]How make animations work inside ScrollView in SwiftUI? Accordion style animation in SwiftUI

我正在尝试使用 SwiftUI 构建带有动画的手风琴风格视图。 但是,如果我将动画包装到 ScrollView 中,动画将无法正常工作。下面是我正在尝试解决的代码。

struct ParentView: View {
    @State var isPressed = false
    var body: some View {
        GeometryReader { geometry in
            ScrollView {
                Group {
                    SampleView(index: 1)
                    SampleView(index: 2)
                    SampleView(index: 3)
                    SampleView(index: 4)
                }.border(Color.black).frame(maxWidth: .infinity)
            }.border(Color.green)
        }
    }
}

struct SampleView: View {
    @State var index: Int
    @State var isPressed = false
    var body: some View {
        Group {
            HStack(alignment:.top) {
                VStack(alignment: .leading) {
                    Text("********************")
                    Text("This View = \(index)")
                    Text("********************")
                }
                Spacer()
                Button("Press") { self.isPressed.toggle() }
            }

            if isPressed {
                VStack(alignment: .leading) {
                    Text("********************")
                    Text("-----> = \(index)")
                    Text("********************")
                }.transition(.slide).animation(.linear).border(Color.red)
            }
        }

    }
}

下面是我面临的问题的截图。

在此处输入图像描述

在此处输入图像描述

要使其具有动画效果, self.isPressed.toggle()包装在withAnimation闭包中。

Button("Press") { withAnimation { self.isPressed.toggle() } }

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM