iOS 13 пользовательских переходов с использованием UIViewControllerAnimatedTransitioning при представлении модального странного поведения - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть собственный переход между viewcontrollers, который затухает текущим V C, и новым, в котором прекрасно работает, но на iOS 13 теперь, когда viewcontroller представлен модально с его новым переходом, где вы все еще можете видеть предыдущий V C на заднем плане, мой переход переопределяет его, я хотел бы, чтобы он оставлял зазор вверху и закругленные углы вместо того, чтобы становиться полноэкранным.

Пример работы по-старому ( я замедлил анимацию):

enter image description here

как это выглядит iOS 13:

enter image description here

это код, который я использую для перехода:

class FadeAnimationController: NSObject, UIViewControllerAnimatedTransitioning {

  func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
    return 3
  }

  func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {

    guard let fromVC = transitionContext.viewController(forKey: .from),
      let toVC = transitionContext.viewController(forKey: .to)
      else {
        return
    }

    let duration = self.transitionDuration(using: transitionContext)

    transitionContext.containerView.backgroundColor = .white
    transitionContext.containerView.addSubview(toVC.view)
    transitionContext.containerView.addSubview(fromVC.view)

    toVC.view.alpha = 0

    UIView.animate(withDuration: duration, animations: {
      toVC.view.alpha = 1
      fromVC.view.alpha = 0
    }, completion: { _ in
      transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
    })
  }
}

snapshot и toVC - те, которые становятся полным размером экрана вместо оставшихся такой же размер и форма fromVC. Как я могу предотвратить это?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Получается, что я переопределял неправильный тип перехода, я должен был переопределить переход контроллеров навигации, а не контроллеры вида. Таким образом, я эффективно создавал свои собственные переходы модальной презентации вместо обычной анимации show / pu sh, поэтому она охватывала модальный переход iOS 13. Я реализовал то, что нашел в этом ответе , и он работал хорошо

0 голосов
/ 02 апреля 2020

Я думаю, что ваша проблема в вашем звонке:

transitionContext.containerView.addSubview(fromVC.view)

Вам не нужно это делать.

...