Ios SwiftUI的苹果教程有错误吗?还是一个Xcode错误?

Ios SwiftUI的苹果教程有错误吗?还是一个Xcode错误?,ios,swift,xcode,swiftui,Ios,Swift,Xcode,Swiftui,在针对SwiftUI的Apple教程中,在“视图和过渡动画”下,教程末尾(页面底部)的预览中显示的内容与我下载项目文件并在Xcode上运行时显示的内容不同 教程: 项目文件(您也可以从教程页面下载): 问题: 在本教程结束时,在HikeView中,当您按“心率”、“配速”或“仰角”时,图形应更改为相应的图形(它们在预览中显示)。然而,当我在Xcode上运行它时,图形只是上下移动,没有任何其他变化 当我试图自己解决问题时,我注意到从HikeGraph.swift中删除.transition(.sl

在针对SwiftUI的Apple教程中,在“视图和过渡动画”下,教程末尾(页面底部)的预览中显示的内容与我下载项目文件并在Xcode上运行时显示的内容不同

教程:

项目文件(您也可以从教程页面下载):

问题: 在本教程结束时,在HikeView中,当您按“心率”、“配速”或“仰角”时,图形应更改为相应的图形(它们在预览中显示)。然而,当我在Xcode上运行它时,图形只是上下移动,没有任何其他变化

当我试图自己解决问题时,我注意到从
HikeGraph.swift
中删除
.transition(.slide)
似乎可以解决问题。但是,为什么这种转换会导致这个问题,有没有一种方法可以使图形在不牺牲幻灯片转换的情况下按预期工作


我正在寻找图形的修复方法,如果可能的话,寻找转换导致图形无法正常工作的原因。

这可以在不删除
.transition(.side)
的情况下解决

使用:

而不是:

ForEach(data.indices) { index in
        GraphCapsule(
            index: index,
            height: proxy.size.height,
            range: data[index][keyPath: self.path],
            overallRange: overallRange)
        .colorMultiply(self.color)
        .transition(.slide)
        .animation(.ripple(index: index))
    }

ForEach需要一个标识符来正确识别所创建的视图,因此如果没有标识符,动画就不能正常工作。

这有点过时,Xcode 11.4/iOS 13.4的快捷方式与Xcode 11.0/iOS 13.0有所不同。请阅读-总结是,这不是解决志愿者问题的理想方式,而且可能对获得答案起到反作用。请不要将此添加到您的问题中。
ForEach(data.indices) { index in
        GraphCapsule(
            index: index,
            height: proxy.size.height,
            range: data[index][keyPath: self.path],
            overallRange: overallRange)
        .colorMultiply(self.color)
        .transition(.slide)
        .animation(.ripple(index: index))
    }