iOS翻页动画-CATransition

今天研究了下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)@property float startProgress;

(4)@property float 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 = [CATransition animation];

    pushTS.duration = 0.5;

    pushTS.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    pushTS.type = @"cube";

    pushTS.subtype = kCATransitionFromRight;

[ self . navigationController . view . layer addAnimation :pushTS forKey : @"navigation" ];

[self.tabBarController.view.layer addAnimation:pushTS forKey:@"tabbar"];

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


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

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


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值