#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, который поддерживает анимацию цепочки и работает очень хорошо.
Просто спросите, есть ли у вас какие-либо вопросы.