Соединение встроенной анимации с пользовательской, определенной пользователем. - PullRequest
0 голосов
/ 13 января 2019

Я только изучаю анимацию в 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?

...