循环遍历图像数组_ SwiftUI

时间:2020-02-02 23:18:16

标签: image loops timer swiftui

我正在尝试用我的应用中的5张图片制作动画。我想单击显示的图像,然后开始动画,该动画前后遍历数组,并在第一张图片上再次结束/停止。

到目前为止,我已经知道了-我从0循环到4,然后就一直在4和3之间循环。

您有什么想法我该如何解决?

谢谢!

struct ContentView: View {

    @State private var activeImageIndex = 0
    @State private var startTimer = false

    let timer = Timer.publish(every: 0.15, on: .main, in: .common).autoconnect()
    let myShots = ["MuscleUp1", "MuscleUp2", "MuscleUp3", "MuscleUp4", "MuscleUp5"]

    var body: some View {
            VStack {
                Image(self.myShots[self.activeImageIndex])
                    .resizable()
                    .aspectRatio(contentMode: .fit)

                    .onReceive(self.timer) { time in
                        if self.startTimer {
                            if self.activeImageIndex != 4 {
                                self.activeImageIndex += 1
                            } else {
                                self.activeImageIndex -= 1
                            }
                        }
                }
                .onTapGesture {
                    self.startTimer.toggle()
                }
            }
        .background(Color.blue)
    }
}

2 个答案:

答案 0 :(得分:0)

您似乎在用于递增activeImageIndex的if语句中遇到问题:

if self.activeImageIndex != 4 {
    self.activeImageIndex += 1
} else {
    self.activeImageIndex -= 1
}

activeImageIndex启动并成功进入4时,它将像这样运行:

if self.activeImageIndex != 4 4 == 4,因此输入else情况self.activeImageIndex -= 1activeImageIndex现在为3。

if self.activeImageIndex != 4 3!= 4,因此输入if情况self.activeImageIndex += 1activeImageIndex现在又是4。

然后重复一遍。

答案 1 :(得分:0)

您可以添加私有变量,例如。 digraph { "complete" [xlabel=<<font color="green">Xcomplete</font>> label="complete", fontcolor=red]; }

_up

并修改.. @State private var _up = true ......

.onReceive