ScrollView 中的动画缺少 SwiftUI 中的最后一个对象

Posted

技术标签:

【中文标题】ScrollView 中的动画缺少 SwiftUI 中的最后一个对象【英文标题】:Animation in ScrollView is missing the last object in SwiftUI 【发布时间】:2021-01-12 17:55:59 【问题描述】:

我正在尝试创建一个对象列表,当填充每个对象时,其动画将根据其在数组中的位置产生延迟。

为了复制我的问题,代码如下:

struct ScrollViewTest: View
    
    @State private var indexes = [Int]()
        
    var body: some View
        VStack
            ForEach(indexes, id:\.self) index in
                Text("Index: \(index)")
                    .transition(.opacity)
            
            
        
        .onAppear 

            for index in 0..<9
                withAnimation(Animation.easeInOut.delay(Double(index) * 0.5))
                    indexes.insert(index, at: index)
                
            
        
    

如您所见,Index 8 在动画开始之前就已经可见。 我该如何解决这种问题?

【问题讨论】:

您正在动画插入到一个数组中——您希望这个动画看起来像什么? 因为我希望动画看起来惊人。所以我想为它使用索引。 你能添加一个视频来展示它对你的看法吗?它在 Xcode 12.3、ios 14.3 中按预期工作。 【参考方案1】:

我在 Swift 5,Xcode 版本 12.3 上没有看到问题。

【讨论】:

【参考方案2】:

显然,此问题仅在实时预览中出现。 我的错误是我确定有问题,因为我使用实时预览来检查动画。

【讨论】:

以上是关于ScrollView 中的动画缺少 SwiftUI 中的最后一个对象的主要内容,如果未能解决你的问题,请参考以下文章

水平 ScrollView (SwiftUI) 中的动画展开/折叠组

ScrollView 中的初始 SwiftUI 动画

ScrollView + NavigationView 动画故障 SwiftUI

ScrollView 的 SwiftUI 动画

SwiftUI ScrollView 自动添加不需要的动画

滚动视图中的 SwiftUI 动画/过渡表现奇怪