Как возобновить поведение UIViewPropertyAnimator, когда приложение снова становится активным - PullRequest
0 голосов
/ 10 марта 2019

В моем приложении у меня есть горизонтальная UIScrollView.Ниже этого вида прокрутки UIVisualEffectView, а ниже UIImageView.В моем представлении прокрутки есть 2 страницы.

Я также инициализирую свой аниматор:

private let scrollViewSwipeAnimator = UIViewPropertyAnimator(duration: 0, curve: .easeOut)

Вкл. viewDidLoad Я настроил свой аниматор следующим способом:

private func setupSwipeAnimator() {
  scrollViewSwipeAnimator.addAnimations {
    self.backgroundImageView.transform = CGAffineTransform(scaleX: 0.85, y: 0.85)
    self.backgroundImageBlurView.effect = UIBlurEffect(style: .regular)
  }
}

Требуемый эффект - при переходе пользователя на следующую страницу, масштаб изображения уменьшается и применяется эффект размытия - рабочий пример здесь .

Это реализованов scrollViewDidScroll с помощью свойства fractionComplete аниматора

func scrollViewDidScroll(_ scrollView: UIScrollView) {
  currentPage = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
  if scrollView.bounces {
    if currentPage < 0 { currentPage = 0 }
    if currentPage > pages.count { currentPage = pages.count }
  }

  let currentPageFrameX = CGFloat(currentPage) * view.frame.width
  let offsetXFromCurrentPage = scrollView.contentOffset.x - currentPageFrameX

  var percentToNextPage = offsetXFromCurrentPage / view.frame.width
  if scrollView.bounces {
    if percentToNextPage < 0 { percentToNextPage = 0 }
  }    

  if currentPage == 0 {
    scrollViewSwipeAnimator.fractionComplete = percentToNextPage
 }
}

Это работает нормально, пока я не отправлю приложение в фоновый режим, а затем снова сделаю его активным.Аниматор свойств перестает работать, и я думаю, что мне нужно установить его снова, потому что все анимации были удалены iOS?

Я пытался сделать это, наблюдая за UIApplication.willEnterForegroundNotification a, затем вызывая setupSwipeAnimator(), но я получаю странныйповедение.Аниматор просто мгновенно применяет размытие и масштабирование.Кажется, свойство fractionComplete не соблюдается.

Как правильно активировать UIViewPropertyAnimator после того, как приложение снова станет активным?

...