iOS学习总结----核心动画

iOS的动画实现有3重方式:

1.UIView 动画,这是最基本最常用的动画方式,主要改变UIView的属性来达到动画的效果(渐隐/渐现).
    // 开始动画
    [UIView beginAnimations:@"animataion1" context:nil];
    //
设置动画时间
    [UIView setAnimationDuration:2];
    //
延迟时间
    [UIView setAnimationDelay:1];
    //
重复次数
    [UIView setAnimationRepeatCount:MAXFLOAT];
    //
设置代理
    [UIView setAnimationDelegate:self];
    //
设置动画结束后执行的代理方法
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
   
//
修改动画的属性
    view.alpha = 0.1;
    //
提交动画
    [UIView commitAnimations];

    

后来学习了block语法动画,上面这个由于不方便就不常用了;
(1)淡入淡出动画
[ UIView animateWithDuration : 2 animations :^{
      
        view.
frame = CGRectMake ( 90 , 400 , 100 , 100 );
    }];
  
   
    [
UIView animateWithDuration : 2 animations :^{
        view.
frame = CGRectMake ( 90 , 400 , 200 , 200 );
    }
completion :^( BOOL finished) {
       
if (finished) {
            view.
frame = CGRectMake ( 90 , 90 , 100 , 100 );
        }
    }];
(2)视图切换动画(省略)

2.CATransition动画,主要用于两个视图切换过度的动画效果,系统内置了几种效果,可以直接使用.
    通过改变视图的transform属性,可以实现动画

3.CAAnimation动画,这是iOS的核心动画,结合绘图(layer图层)可以实现灵活多变的动画效果.  CAAnimation是所有动画对象的父类,负责控制动画持续的时间和速度,是个抽象类,不能直接使用,需要使用他的具体的子类

(1)使用Core Animation往往事半功倍,需要先添加QuartzCore.framework和引入对应的框架< QuartzCore/ QuartzCore.h >,

(2)开发步骤:
1>> 初始化一个动画对象(CAAnimation)并设置相关动画属性:opacity,position,transform,bounds,contents等,具体可以在API文档中搜索:CALayer Animatable Properties;
2>> 添加动画对象到层(CALayer)中,开始执行动画:
   通过调用CALayer的addAnimation:forKey增加动画到层( CALayer )中,这样就触发动画了.
   调用removeAnimationForKey可以停止动画.

CAAnimation动画的执行过程都是在后台操作的,不会阻塞主线程.


常用属性:
duration:动画持续时间
repeatCount:重复次数,如果想要无限循环可以设置HUGE_VALF或者MAXFLOAT
repeatD uration:重复时间
removedOnCompletion:默认YES,如果想要动画结束后人保持在动画执行后的状态,就设置为NO;不过还要设置fillMode为kCAFillModeForwards
fillMode:决定当前对象在非active时间段的行为,比如动画结束之前或者结束之后(如果想要 fillMode有效,最好设置 removedOnCompletion = NO ).
beginTime:用来设置动画延迟执行时间,如果想延迟2s,则设为CACurrentMediaTime()+2;
CACurrentMediaTime:是图层的当前时间


CAAnimation的代理方法:
//动画 开始
- ( void )animationDidStart:( CAAnimation *)anim ;
//动画 结束
- ( void )animationDidStop:( CAAnimation *)anim finished:( BOOL )flag


如上图显示的, CAAnimation下有四种子动画,CABasicAnimation是基础动画,可以缩放,旋转,快速旋转并设置好角度会造成抖动的效果.
CAKeyFrameAnimation是关键帧动画,可以使视图绕着贝塞尔曲线或者做圆周运动.
CAAnimationGroup是组动画,可以将两个动画放到一个组里面,实现动画的叠加.
CATransition是转场动画,可以实现两个视图之间的动画转换,也可以用来修改导航控制器的动画效果.

UIView也可以用下面两个方法实现两个视图的翻转效果:
 [ UIView transitionFromView : _view1 toView : _view2 duration : 1 options : UIViewAnimationOptionTransitionFlipFromLeft completion :^( BOOL finished) {
       
       
NSLog ( @"finished" );
    }];
单视图翻转:
    [ UIView setAnimationTransition : UIViewAnimationTransitionFlipFromLeft forView : _view1 cache : YES ];
    [UIView commitAnimations];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值