iOS翻页动画-CATransition

来源:互联网 发布:350淘宝装修下载 编辑:程序博客网 时间:2024/04/28 02:07

今天研究了下iOS的一些页面翻转动画,即CATransition,特此记录。

CATransition是转场动画,主要是页面、图片切换时的一些动画效果(个人理解)

CATransition的属性:CATransition继承自CAAnimation,所以CAAnimation的属性都有,特有的属性有5个

(1)@property(copy)NSString *type;//类别,转场动画的名称,系统公有apiyou4个:

/* Common transition types. */

CA_EXTERN NSString *const kCATransitionFade

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

CA_EXTERN NSString *const kCATransitionMoveIn

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

CA_EXTERN NSString *const kCATransitionPush

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

CA_EXTERN NSString *const kCATransitionReveal

还有一些是私有api,自己也不知道私有api查看方法,只是从网上找的,效果不错,不过上架有可能被拒,慎用

    Cube,                       //立方体

    SuckEffect,                 //吮吸

    OglFlip,                    //翻转

    RippleEffect,               //波纹

    PageCurl,                   //翻页

    PageUnCurl,                 //反翻页

    CameraIrisHollowOpen,       //开镜头

    CameraIrisHollowClose,      //关镜头


(2)@property(nullable,copy)NSString *subtype;  //方向种类,就是页面从哪个方向显示和消失

/* Common transition subtypes. */

CA_EXTERN NSString *const kCATransitionFromRight

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

CA_EXTERN NSString *const kCATransitionFromLeft

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

CA_EXTERN NSString *const kCATransitionFromTop

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

CA_EXTERN NSString *const kCATransitionFromBottom

    __OSX_AVAILABLE_STARTING (__MAC_10_5, __IPHONE_2_0);

(3)@propertyfloat startProgress;

(4)@propertyfloat endProgress;

startProgress和endProgress是关联属性,是设置动画的开始进度和结束进度,默认的是startProgress=0,endProgress=1,是显示完整的动画,如果endProgress=0.5只显示前一半的动画了,两个值的范围都是0-1,并且endProgress必须大于等于startProgress,当然等于的话就不显示动画了

(5)@property(nullable,strong)id filter;//这个是滤镜的效果,使用后type和subtype都无效,默认为nil,我自己也没研究清楚,就不说了


动画的实现:

    CATransition *pushTS = [CATransitionanimation];

    pushTS.duration =0.5;

    pushTS.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    pushTS.type =@"cube";

    pushTS.subtype =kCATransitionFromRight;

[self.navigationController.view.layeraddAnimation:pushTSforKey:@"navigation"];

[self.tabBarController.view.layeraddAnimation:pushTSforKey:@"tabbar"];

这样在跳转页面的时候就有动画效果了,需要在点击方法里面设置,如果直接在viewdidload中设置无效


如果是每次进入这个页面都需要动画,可以在第二页的viewwillappear中设置,如果跳出页面都需要相同动画,也可以在第一页的viewwilldisappear中设置,

由于第二个页面的viewwillappear后执行,第一个页面的viewwillappear先执行,所有同时有的话会执行第二个页面的viewwillappear中的


同样,在其它view的layer上添加也能实现动画效果



0 0