【发布时间】:2018-09-15 14:55:51
【问题描述】:
我正在尝试以模态方式呈现视图控制器。它就像一个弹出视图控制器。
我正在使用 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屏幕变黑
【问题讨论】:
-
请阅读minimal reproducible example,然后阅读edit你的问题,显示问题的最小代码
-
我已经删除了额外的代码
标签: ios iphone swift delegates