Как установить разные длительности для пакетной анимации [Swift] - PullRequest
0 голосов
/ 11 июля 2019

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

Это код, который у меня сейчас есть:

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()
}

Приведенный выше код приводит к анимации всех фигур и одновременному достижению их конечных позиций. Я хочу, чтобы фигуры по-прежнему анимировались вместе, но достигали своих конечных позиций с разной скоростью. Как я могу это сделать?

...