西贝了爷  

 

   //设置类型有两种方式,一种是字符串,一种是系统宏
    //  anim.type = @"cube";
    //  anim.type = kCATransitionPush;

   //subtype: 设置方向

   //  anim.subtype = kCATransitionFromRight;

//动画持续时间
    //    anim.duration = 1;
    
    // 设置动画进度.0->1
    //    anim.startProgress = 0.5;  从动画进行一半开始
    //    anim.endProgress = 0.5;    动画进行一半结束
    
    
    CATransition *anim = [CATransition animation];
    anim.type = @"cube";
    anim.subtype = kCATransitionFromRight;
    anim.duration = 1;
    [self.redView.layer addAnimation:anim forKey:nil];

 

CATransition类继承于CAAnimation类,提供的是过滤的效果,如pushfadereveal等。

type属性是用于指定效果类型,当前官方提供的效果有fademoveInpushreveal. 默认为fade。对于其它类型,如cube立体效果这种官方没有公开,也不清楚是否是使用私有。

subtype属性是可选的,主要用于指定动画的方向。比如动作类动画效果中,有从左边进入、从右边进入等效果。

这两个属性可以设置动画动作的进度,默认为0->1。

filter属性默认为nil,一旦设置了此属性,typesubtype就会被忽略。 这个属性意思就是滤镜的意思吧,它需要实现inputImageinputTargetImageinputTimeoutputImage,当然还有一个可选的inputExtent,不要求实现。

更多基础知识,请参考:CAAnimation精讲

实战练习做动画


先看看我们做效果图:

image

常用的transition动画几乎都有了,而且笔者在学习的同时,也这将些动画封装成了一个类方法,只需要一行代码就可以实现动画效果了哦!

头文件声明

这里只公共了一个方法,并将常用的动画使用一个枚举类型来指定,不用再记着那些单词了。

 

实现文件

其实实现的代码也很简单,只是对枚举类型判断一下,然后添加动画:

 

解析

我们的核心添加动画的代码是:

系统提供给我们一些动画是在UIView上提供的方法,我们可以看看这个枚举:

我们添加动画只需要调用UIView添加动画的方法就可以实现了:

 

测试效果


我们在ViewController这里尝试一下效果,这里只是使用定时器每一秒就自动切换一种效果:

posted on 2016-03-31 00:57  西贝了爷  阅读(1241)  评论(0编辑  收藏  举报