首页 > 解决方案 > 列表行平滑动画

问题描述

我有一个列表,我想view显示。animation当我点击该行时,以下代码会产生生涩。我想修改以创建更流畅的动画。有没有办法平滑地对 a 的更改进行动画处理List

import SwiftUI

struct ContentView: View {
    var body: some View {
        List(0..<10){index in
             ListItem(title: index)
        }
    }
}

struct ListItem: View {
    @State var title: Int
    @State var bOpen = false

    var body: some View {
        VStack{
            Text("\(title+2) items")
            withAnimation{
                self.bOpen ? Options() : nil
            }
        }.onTapGesture {
            self.bOpen.toggle()
        }
    }
}

struct Options: View {
    var body: some View {
        HStack {
            Image(systemName:"circle.fill")
            Image(systemName:"star")
        }

    }
}
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

标签: animationswiftui

解决方案


使用.animation()修饰符ListItem

喜欢:

ListItem(title: index).animation(.default)

您也可以将其应用于VStack自身(如果您设法ListItem为所有更改设置动画)。

而且不需要withAnimation


推荐阅读