如何修改幻灯片过渡

时间:2016-02-20 23:27:10

标签: swift animation uiviewcontroller

我之前曾问过类似这样的问题,但由于两种方法的细微差别,我没有意识到并且没有想到我可以使用相同的方法。 (How to stop slide transition into Second VC before it covers UIView?

我最终学会了如何使用APPCoda的课程进行过渡(http://www.appcoda.com/custom-segue-animations/

原始问题产生了一个答案,提供了使用容器视图和硬编码视图的解决方案。我想知道的是,如果我可以使用两个独立的视图控制器获得相同的效果,并通过带有手势识别器的segue链接它们。

我想要完成的是:

  • 拥有我的初始视图控制器
  • 点击按钮并让第二视图控制器重叠第一个视图控制器部分(部分我的意思是我在第一个视图控制器上有一个UIView,我想保持可见。所以第二个视图控制器的顶部将向上滑动直到它击中了UIView的底部。)

我目前所拥有的是第二个视图控制器从屏幕底部向上滑动,原始视图控制器被向上推出屏幕。

使用从一个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)

    }
}
};

0 个答案:

没有答案