自定义转场呈现视图控制器无法工作

5

我希望在我的应用程序中,能够滑动进入和退出视图控制器。因此,我正在使用自定义转换,但应用程序崩溃了。我无法确定确切的问题所在,请帮助我解决。

代码

class CustomTransition: NSObject, UIViewControllerAnimatedTransitioning,UIViewControllerTransitioningDelegate {

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {

        // get reference to our fromView, toView and the container view that we should perform the transition in
        let container = transitionContext.containerView
        let fromView = transitionContext.view(forKey: UITransitionContextViewKey.from)! // the app crashes here saying nil founded
        let toView = transitionContext.view(forKey: UITransitionContextViewKey.to)!
        let animationDuration = self .transitionDuration(using: transitionContext)
        let offScreenRight = CGAffineTransform(translationX: container.frame.width, y: 0)
        let offScreenLeft = CGAffineTransform(translationX: -container.frame.width, y: 0)

        toView.transform = offScreenRight

        // add the both views to our view controller
        container.addSubview(toView)
        container.addSubview(fromView)

        UIView.animate(withDuration: animationDuration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.8, options: [] , animations: {
            fromView.transform = offScreenLeft
            toView.transform = CGAffineTransform.identity
        }, completion: { finished in
            // tell our transitionContext object that we've finished animating
            transitionContext.completeTransition(true)
        })
    }

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

    func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return self
    }

    func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        return self
    }
}

我是如何使用的

let vc = self.getViewControllerFromStoryBoard(storyBoardName: FORGOT_PASSWORD_SB, identifier: FORGOT_PASSWORD_IDENTIFIER) as! ForgotPassword
let a = CustomTransition()
vc.transitioningDelegate = a
vc.modalPresentationStyle = .custom
self.present(vc, animated: true, completion: nil)

这个应用程序崩溃了,提示“找不到nil”,let fromView = transitionContext.view(forKey: UITransitionContextViewKey.from)! 有什么问题吗?请问我漏掉了什么东西吗?

你如何呈现你的视图控制器? - NSDmitry
@NSDmitry,我已经提到了我如何使用。 - Sonali Pawar
1个回答

0
由于苹果在iOS 13更新中进行了API更改,我遇到了同样的问题。添加这行代码解决了我的问题。
vc.modalPresentationStyle = .fullScreen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接