自定义视图控制器过渡



我正在尝试按照本教程进行自定义视图转换。这是我的代码

class ItemsTableViewController: UITableViewController, UIViewControllerTransitioningDelegate {
let customPresentAnimationController = CustomPresentAnimationController()
// viewDidLoad and TableView methods
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showAction" {
        let toViewController = segue.destination as UIViewController
        toViewController.transitioningDelegate = self
        toViewController.modalPresentationStyle = .custom
    }
}
func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
    return customPresentAnimationController
}

}

对于CustomPresentAnimationController

class CustomPresentAnimationController: NSObject, UIViewControllerAnimatedTransitioning {
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
    return 5
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
    let fromViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)!
    let toViewController = transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)!
    let finalFrameForVC = transitionContext.finalFrame(for: toViewController)
    let containerView = transitionContext.containerView
    let bounds = UIScreen.main.bounds
    toViewController.view.frame = finalFrameForVC.offsetBy(dx: 0, dy: bounds.size.height)
    containerView.addSubview(toViewController.view)
    UIView.animate(withDuration: transitionDuration(using: transitionContext), delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options: .curveLinear, animations: {
        fromViewController.view.alpha = 0.5
        toViewController.view.frame = finalFrameForVC
        }, completion: {
            finished in
            transitionContext.completeTransition(true)
            fromViewController.view.alpha = 1.0
    })
}

}

然而,自定义转换不起作用。问题是没有调用animationcontrollerforpresenttedcontroller方法。我该如何解决这个问题?

在swift 3中

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return customPresentAnimationController
}

已被替换为

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

相关内容

  • 没有找到相关文章

最新更新