Я создаю пользовательский интерфейс, в котором фигуры скользят по экрану в зависимости от выбранного числа. Я хочу пакетировать их анимацию (чтобы они все анимировались одновременно), но также назначать разную длительность каждой анимации.
Это код, который у меня сейчас есть:
private func updateSelectedFigures(_ selectedNumber: Int) {
for i in 0...numFigures - 1 {
if i < selectedNumber && !isSelected[i] {
// slide in
isSelected[i] = true
updateCenterConstraints(for: figureViews[i], with: figureDisplayOffsets[i])
}
if i >= selectedNumber && isSelected[i] {
// slide out
isSelected[i] = false
updateCenterConstraints(for: figureViews[i], with: figureHideOffsets[i])
}
}
// we want to attach different animation durations to each image,
// but still animate all of them at once. How to do this?
UIView.animate(withDuration: 0.6, animations: {
self.layoutIfNeeded()
})
}
private func updateCenterConstraints(for figureView: UIImageView, with offset: CGFloat) {
figureView.snp.updateConstraints{ (make) in
make.centerX.equalToSuperview().offset(offset)
}
self.setNeedsUpdateConstraints()
}
Приведенный выше код приводит к анимации всех фигур и одновременному достижению их конечных позиций. Я хочу, чтобы фигуры по-прежнему анимировались вместе, но достигали своих конечных позиций с разной скоростью. Как я могу это сделать?