Почему эти ограничения запаздывают при анимации? - PullRequest
0 голосов
/ 30 мая 2019

Я анимирую свои ограничения, используя UIView.animate.drawerHeight является переменной ограничения.

Вот код:

drawerHeight?.constant = newHeight

UIView.animate(withDuration: 0.35, delay: 0, usingSpringWithDamping: 0.65, initialSpringVelocity: 2, options: .allowUserInteraction, animations: {
    self.superview?.layoutIfNeeded()
})

Вот видео о том, как выглядит проблема.

Глядя на нижнюю часть видео, нижний край отстает. Почему эти ограничения кажутся запаздывающими при анимации?

Это вопрос с самостоятельным ответом.Этот пост поможет людям в будущем узнать, что они сделали неправильно, и как быстро это исправить.

1 Ответ

0 голосов
/ 30 мая 2019

Проблема заключалась в том, что ограничение было прикреплено к представлению в более глубокой иерархии, чем раньше. При использовании layoutIfNeeded() он должен вызываться для суперпредставления представления, содержащего ограничения.

В моей ситуации я поместил представление с ограничением drawerHeight в другое UIView, что сделало его более глубоким в иерархии.

Я исправил проблему, выполнив

self.superview?.superview?.layoutIfNeeded(),

вместо

self.superview?.layoutIfNeeded().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...