我之前曾问过类似这样的问题,但由于两种方法的细微差别,我没有意识到并且没有想到我可以使用相同的方法。 (How to stop slide transition into Second VC before it covers UIView?)
我最终学会了如何使用APPCoda的课程进行过渡(http://www.appcoda.com/custom-segue-animations/)
原始问题产生了一个答案,提供了使用容器视图和硬编码视图的解决方案。我想知道的是,如果我可以使用两个独立的视图控制器获得相同的效果,并通过带有手势识别器的segue链接它们。
我想要完成的是:
我目前所拥有的是第二个视图控制器从屏幕底部向上滑动,原始视图控制器被向上推出屏幕。
使用从一个VC到滑动VC的segue处理转换的代码:
import Foundation
class CustomSegueToSecondVC: UIStoryboardSegue
{
override func perform() {
let originalVC = self.sourceViewController .view as UIView!
let slidingVC = self.destinationViewController.view as UIView!
let screenWidth = UIScreen.mainScreen().bounds.size.width
let screenHeight = UIScreen.mainScreen().bounds.size.height
slidingVC.frame = CGRect(x: 0.0, y: screenHeight, width: screenWidth, height: screenHeight)
let window = UIApplication.sharedApplication().keyWindow
window?.insertSubview(slidingVC, aboveSubview: originalVC)
UIView.animateWithDuration(0.4, animations: { () -> Void in
originalVC.frame = CGRectOffset(originalVC.frame, 0.0, -screenHeight)
slidingVC.frame = CGRectOffset(slidingVC.frame, 0.0, -screenHeight)
}) { (Finished) -> Void in
self.sourceViewController.presentViewController(self.destinationViewController as UIViewController, animated: false, completion: nil)
}
}
};