Я пытаюсь представить контроллер вида модально.Это как всплывающее окно просмотра контроллера.
Я использую метод animateTransition для анимации перехода.Это мой код:
extension PopUpViewController: UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning {
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 0.25
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
guard let fromVC = transitionContext.viewController(forKey: .from) else { return}
guard let toVC = transitionContext.viewController(forKey: .to) else { return}
guard let fromView = transitionContext.view(forKey: .from) else { return}
guard let toView = transitionContext.view(forKey: .to) else { return}
var containerView = transitionContext.containerView
if toVC == self {
// presenting
containerView.addSubview(toView)
toView.frame = fromView.frame
popUpView.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
toView.alpha = 0
UIView.animate(withDuration: 0.25, animations: {
toView.alpha = 1
self.popUpView.transform = CGAffineTransform.identity
}) { _ in
DispatchQueue.main.async {
transitionContext.completeTransition(true)
}
}
} else {
// dismissing
UIView.animate(withDuration: 0.25, animations: {
self.popUpView.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
fromView.alpha = 0
}) { _ in
transitionContext.completeTransition(true)
}
}
}
func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return self
}
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return self
}
}
Я представляю этот контроллер представления (Presented VC) поверх другого контроллера представления (Presenting VC) таким образом.Я использую модальный стиль презентации по умолчанию.Первоначально я использовал кастом, но я посмотрел некоторые посты в StackOverflow, и они сказали удалить его, но все же я получаю черный экран (представляющий VC), и я могу видеть представленный VC поверх него.
Когда яя отклоняю представленный VC, снова видимый VC видим.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Согласно коду при выполнении transitionContext.completeTransition(true)
, отображается экран VCстановится черным