本文是投稿文章,作者:HenryCheng (简书上的链接: http://www.jianshu.com/p/8c29fce5a994)@H_403_1@
@H_403_1@
@H_403_1@
一、前言@H_403_1@
用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下@H_403_1@
@H_403_1@
在iOS中,在同一个导航控制器你可以自定义转场动画实现两个viewController之间的过渡。实际上在iOS7之后,通过实现UIViewControllerAnimatedTransitioning或者UIViewControllerContextTransitioning协议,就可以简单的自定义转场动画,比如一个NavigationController的push和pop。还有一点你需要知道的是,我如果有一个矩形,有一个圆,想要在这个矩形上剪出和圆大小相同的面积,那么就要用到CALayer的mask属性,下面用图表达可能会直观些:@H_403_1@
@H_403_1@
laye.mask@H_403_1@
现在可能你对mask属性有一点了解了,下面代码的实现中你将会看到具体的实现过程。先做这么多了解,下面开始一步步实现效果。@H_403_1@
新建工程,这里用的是Swift,选中storyboard,然后加上一个导航,如下@H_403_1@
去掉导航栏@H_403_1@
把右侧的Shows Navigation Bar去掉,因为这个demo里面并不需要导航栏,同时保证Is Instal View Controller是被勾上的(不知道的童鞋可以去掉看一下效果),这里默认的都是勾选上的。然后在新建一个viewController,并设置其继承于ViewController,如下@H_403_1@
新建一个viewController@H_403_1@
然后在两个VC上分别在同样的位置添加两个完全相同的按钮,位置约束在右上角距离右边和上边分别为20,20的距离,为了区分,将这两个VC设置不同的背景色,如下@H_403_1@
按钮的约束位置以及大小@H_403_1@
然后右键一直按住第一个按钮拖拽至第二个VC(也就是黄色背景的)点击show@H_403_1@
@H_403_1@
这时候两个VC之间就会出现一条线,然后点击线中间,设置identifier为PushSegue,这里设置一个标识符,为后面的跳转做准备,效果如下:@H_403_1@
设置identifier@H_403_1@
将两个按钮连接成ViewController的同一个属性,名为popBtn,然后将第二个VC的按钮实现一个点击方法(因为我们要pop回来)名为popClick,如下@H_403_1@
@H_403_1@
importUIKit
classViewController:UIViewController{
@IBOutletweak
var
popBtn:UIButton!
overridefuncviewDidLoad(){
super
.viewDidLoad()
//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.
}
@H_404_120@
@IBActionfuncpopClick(sender:AnyObject){