我现在就是这样做的:
func presentOverlayController(controller: UIViewController) {
controller.modalPresentationStyle = .Custom
controller.transitioningDelegate = self
presentViewController(controller, animated: true, completion: nil)
}
//MARK: - UIViewControllerTransitioningDelegate
public func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
return OverlayPresentationController(presentedViewController: presented, presentingViewController: presenting)
}效果很棒。首先,我使用.instantiateViewControllerWithIdentifier:从故事板中获得控制器。给出控制器的正确方法:

但是,我需要使用自定义的segue实现相同的结果。
class OverlaySegue: UIStoryboardSegue, UIViewControllerTransitioningDelegate {
override func perform() {
destinationViewController.modalPresentationStyle = .Custom
destinationViewController.transitioningDelegate = self
}
//MARK: - UIViewControllerTransitioningDelegate
func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
return OverlayPresentationController(presentedViewController: presented, presentingViewController: presenting)
}
}但它不起作用。为什么?
发布于 2016-07-28 08:59:37
在perform的末尾,您需要调用presentViewController(destinationViewController, animated: true, completion: nil)。
https://stackoverflow.com/questions/38631422
复制相似问题