L oop вперед и назад через массив изображений _ SwiftUI - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь сделать анимацию из 5 картинок в моем приложении. Я хочу нажать на отображаемое изображение и затем запустить анимацию, которая идет вперед и назад по массиву и заканчивается / останавливается снова на первом изображении.

Пока у меня есть это - я l oop из От 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)
    }
}

1 Ответ

0 голосов
/ 03 февраля 2020

Кажется, у вас есть проблема в операторе if, который используется для увеличения activeImageIndex:

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

Когда activeImageIndex запускается и успешно переходит к 4, он будет работать следующим образом:

if self.activeImageIndex != 4 4 == 4, поэтому входит в случай else self.activeImageIndex -= 1, activeImageIndex теперь равен 3.

if self.activeImageIndex != 4 3! = 4, поэтому входит в случай if self.activeImageIndex += 1, activeImageIndex теперь снова 4.

Тогда это повторяется навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...