Swiftui 如何使用swift ui设置从一个文本切换到另一个文本的动画?

Swiftui 如何使用swift ui设置从一个文本切换到另一个文本的动画?,swiftui,Swiftui,我有一个字符串数组。例如[汽车、船、货车] 我如何动画化数组中文本的变化,该数组可以包含更多字符串,以便通过模糊过渡从汽车切换到船,再切换到面包车?这样它就不断地循环这个 我已经有了一个关于如何制作动画的想法,但是我一直在切换文本。 我问了一个问题,为什么文本不在这里切换-> 但是我认为最好写一个关于如何实际切换文本的单独问题。这里有一个可能的解决方案,基于数组设置文本动画。我使用了这个解决方案中的Asperis转换思想 下面是一个可能的解决方案,基于数组设置文本动画。我使用了这个解决方案中的A

我有一个字符串数组。例如[汽车、船、货车]

我如何动画化数组中文本的变化,该数组可以包含更多字符串,以便通过模糊过渡从汽车切换到船,再切换到面包车?这样它就不断地循环这个

我已经有了一个关于如何制作动画的想法,但是我一直在切换文本。 我问了一个问题,为什么文本不在这里切换->


但是我认为最好写一个关于如何实际切换文本的单独问题。

这里有一个可能的解决方案,基于数组设置文本动画。我使用了这个解决方案中的Asperis转换思想


下面是一个可能的解决方案,基于数组设置文本动画。我使用了这个解决方案中的Asperis转换思想


我已经选择了@davidev-answer。但根据他的回答,这就是我所实施的。干杯我已经选择了@davidev-answer。但根据他的回答,这就是我所实施的。干杯这个问题需要更多关注吗?我看到有人投票决定关闭它?这个问题需要更多关注吗?我看到有人投票决定关闭它?
struct ContentView: View {
    var array = ["First", "Second", "Third"]
    @State var shortString = true
    
    @State var currentIndex : Int = 0
    @State var firstString : String = ""
    @State var secondString : String = ""

    var body: some View {

        VStack {
            if shortString {
               Text(firstString).font(.title).fixedSize()
               .transition(AnyTransition.opacity.animation(.easeInOut(duration:1.0)))
            }
            if !shortString {
                Text(secondString).font(.title).fixedSize()
                    .transition(AnyTransition.opacity.animation(.easeInOut(duration:1.0)))
            }
        }
        .animation(.default)
        .onAppear {
            firstString = array[0]
            secondString = array[1]
            
            let timer = Timer.scheduledTimer(withTimeInterval: 2.0, repeats: true) { _ in
                if (shortString) {
                    if currentIndex == array.count - 1 {
                        self.secondString = array[0]
                        currentIndex = 0
                    }
                    else {
                        self.secondString = array[currentIndex+1]
                        currentIndex += 1
                    }
                }
                else {
                    if currentIndex == array.count - 1 {
                        self.firstString = array[0]
                        currentIndex = 0
                    }
                    else {
                        self.firstString = array[currentIndex+1]
                        currentIndex += 1
                    }
                }
                shortString.toggle()
            }
        }
    }
}