Я только изучаю анимацию в iOS. Я знаю основы анимационных блоков в UIView. В настоящее время я пытаюсь анимировать некоторые свойства вместе со встроенной анимацией в iOS. Например, давайте предположим, что я хочу анимировать некоторые изменения макета. Общее руководство, как анимировать автопоставку, выглядит так:
view.layoutIfNeeded() // make sure that autolayout is applied to the view
// 1 Update constraints here - before animation block
UIView.animate(withDuration: 1.0) {
// 2 or update constraints here - in animation block
view.layoutIfNeeded() // call this after all constraints has been updated.
}
Итак, первый вопрос: я должен обновить свои ограничения в анимационном блоке или раньше?
Далее я хотел бы анимировать какую-то другую сборку анимации вдоль первой анимации (то же время, время начала, время окончания и кривая времени). Например, я хотел бы анимировать это с помощью первой анимации:
tableView.setContentOffset(CGPoint(x: 0.0, y: -height), animated: true)
Как это сделать? Мой вопрос связан с iOS 10, 11, 12
У меня есть и другой вопрос. Давайте предположим, что у некоторого UIView нет определенной высоты, но его высота рассчитывается на основе подпредставлений и ограничений Auto loayout. Этот рассчитанный height
может быть доступен в:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let height: CGFloat = self.feedbackPopup?.bounds.height ?? 0.0
self.tableView.setContentOffset(CGPoint(x: 0.0, y: -height), animated: true)
}
Теперь я хотел бы изменить некоторые ограничения на автоматическое расположение на основе этой вычисленной высоты и анимировать изменения. Как это сделать? Вид уже didLayoutSubviews
?