Быстрая анимация — выполнение последовательности

#ios #swift #animation

#iOS #быстрая #Анимация

Вопрос:

Я не совсем уверен, как выполнить последовательность анимаций. Если я попробую это, он обычно переходит к последнему в функции.

Допустим, я хочу переместить 2 UIImageView (бок о бок) на 300 пунктов вверх, затем 2 UILabel (ниже UIImageView ) на 300 пунктов вверх.

Затем я хочу, чтобы метка считалась от 1 до 10 — например -.

Наконец, как только метка досчитает до 10, я хочу UIImageView , чтобы и UILabel переместилось обратно на 300 пунктов.

     func moveLabelUP() {

    label.center = CGPoint(x: label.center.x - 300, y: label.center.y)

    UILabel.animate(withDuration: 5) {

        self.label.center = CGPoint(x: self.label.center.x   300, y: self.label.center.y)

    func startLabelCountUp(){
    timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(updateLabel), userInfo: nil, repeats: true)
}

func updateLabel(){
    if self.current < elapsedTime {
        self.current  = 1

        self.label.text = "(self.current)"
    }else{
        self.timer.invalidate()
    }
}
  

Как я могу соединить эти цепочки событий?

Как я могу применить задержку при запуске таймера для каждого UILabel ?

Я хочу UIImageView , чтобы значение повышалось, UILabel считалось до 10, затем UIImageView опускалось. Это должно повторяться для следующего UIImageView и UILabel справа от первых.

Комментарии:

1. Используете ли вы ограничения?

2. Я сейчас не использую ограничения. Я делаю несколько разных анимаций. Один набор должен начинаться с экрана и отображаться. Другой движется только вверх на 10 пунктов.

Ответ №1:

Именно так я его и использовал. Это всего лишь базовая концепция, но вы получите представление. В моем случае я использовал его с константами.

 UIView.animate(withDuration: duration, animations: { 

   // Your changes to the UI, eg. moving UIImageView up 300 points

   }) { (success) in

        // This executes when animation is completed
        // Create another animation here. It starts when previous ends

        UIView.animate(withDuration: duration2, animations: { 

            // Your changes to the UI

            }, completion: { (success) in

                  // This executes when animation is completed

            })

})
  

Также проверьте другие фреймворки, которые могут вам помочь, есть несколько хороших. Я попробовал Cheetah, который поддерживает анимацию цепочки и работает очень хорошо.

Просто спросите, есть ли у вас какие-либо вопросы.