Анимированные ограничения, как вырастить высоту в нужном направлении - PullRequest
0 голосов
/ 19 февраля 2019

Я использую SnapKit, чтобы изменить высоту UIView на основе события касания.Поэтому, когда пользователь касается ячейки, она расширяется.Это прекрасно работает следующим образом:

@objc func didRecieveTouch() {
    let originalHeight: CGFloat = 90
    let expandedHeight: CGFloat = 244

    if !expanded {
        self.snp.updateConstraints { make in
            make.height.equalTo(expandedHeight)
        }
    } else {
        self.snp.updateConstraints { make in
            make.height.equalTo(originalHeight)
        }

    }
    self.expanded = !self.expanded
    UIView.animate(withDuration: 0.25, animations: {
        self.superview?.layoutIfNeeded()
    })
}

Проблема в том, что направление, в котором растет вид, выглядит странно и неправильно для меня.Представление фактически «прыгает» вниз к новому выделенному пространству и растет вверх вместо того, чтобы расти вниз, что является желаемым поведением, которое я хочу.

enter image description here

1 Ответ

0 голосов
/ 28 марта 2019

Добавьте свой код в блок анимации.

UIView.animate(withDuration: 0.25) {
    if !expanded {
        self.snp.updateConstraints { make in
            make.height.equalTo(expandedHeight)
        }
    } else {
        self.snp.updateConstraints { make in
            make.height.equalTo(originalHeight)
       }
    }
    self.expanded = !self.expanded
    self.superview?.layoutIfNeeded()
 }
...