Как добавить интерактивную анимацию (используя UIVievPropertyAnimator) для переключения размера заголовка (largeTitleDisplayMode) панели навигации - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь создать интерактивную анимацию для переключения режима отображения панели навигации при прокрутке содержимого представления таблицы в методе scrollViewDidScroll (_ scrollView: UIScrollView) . Ниже приведен фрагмент кода, использующий UIViewPropertyAnimator и результат выполнения кода.

private lazy var animator: UIViewPropertyAnimator = {
        return UIViewPropertyAnimator(duration: 0.25, curve: .easeInOut)
    }()

func scrollViewDidScroll(_ scrollView: UIScrollView) {

        if canTransitionToLarge && scrollView.contentOffset.y <= 0 {

                    animator.addAnimations {
                        self.navBar.items?.last?.largeTitleDisplayMode = .always
                        self.navBar.layoutIfNeeded()
                        self.view.layoutIfNeeded()
                    }
                    animator.startAnimation()
                    canTransitionToLarge = false
                }
                else if !canTransitionToLarge && scrollView.contentOffset.y > 0 {

                    animator.addAnimations {
                        self.navBar.items?.last?.largeTitleDisplayMode = .never
                        self.navBar.layoutIfNeeded()
                        self.view.layoutIfNeeded()
                    }
                    animator.startAnimation()
                    canTransitionToLarge = true
                }
    }

Результат выполнения кода

Какие изменения следует изменить сделать в код, чтобы получить интерактивную анимацию, как в видео ниже?

интерактивная анимация

...