1.modal模式到下一个控制器
1.1默认情况下model到下一个控制器,上一个控制器就被顶替了,但是
如果要做弹框效果(弹框为控制器),设置代理并且告诉modal类型为自定义,这时候就不会顶替掉上一个控制器
1.2 ios8负责转场动画的
这个就是它的代理方法,因为返回值为UIPresentationController,所以如果要改变他的大小以及模式,我会选择继承这个控制器,自定义一个控制器
这个是我自定义的控制器,并在控制器里面必须要写的init方法
这时候presentedView的尺寸已经设置完毕,但是它是加在containerView上 的,而它的尺寸是全屏,如果你要实现消失这个试图的话,还需要在这个containerView上设置一个view(蒙版),并且放到你呈现的试图presentedView后边
这样就可以实现让视图消失
1.3然后让返回值为这个控制器,这时候一切已经ok
1.4如果你要设置自己的modal模式为出现的时候自上向下推出,消失的时候自下向上消失
注意:动画完成之后transitionContext.compeleteTransition(true),这句话一定要写。因为如果不写,会出现一些未知错误,既不报错,又不崩溃,就是返回有问题
这时候动画已经做完但是没有效果,我靠,怎么回事。 因为只要实现了这些代理方法,系统的默认动画就没有了,所有东西需要程序员自己完成
所以需要我们自己把toview加到容器里
这时候会展现出来,但是一点,它是从中间展开的,而我想要的是从头展开,这时候就需要设置锚点,因为默认锚点是0.5,0.5
这个时候展现已经完成,同时下面来处理消失,同样用transform来让它压缩为0
思路:1.需要设置个全局属性,但是分类不能添加
2.每次点击展现,消失,都会走代理方法中,是谁负责展现,是谁负责消失
3.在方法中判断是展开还是消失
1.
2.
3.在这个方法中判断动画是展现还是关闭
关闭部分如下:
注意:由于CGFloat是不准确的,所以如果写0。0会没有动画,所以直接0.000001就ok
到此自定义转场的动画就已经over