iOS动画--基础

作者: CatchZeng | 来源:发表于2016-05-13 17:05 被阅读856次

动画

所谓动画就是使一幅图像“活”起来的过程。当眼睛看到多张图片连续快速的切换时,就会被认为是一段连续播放的动画。
实验证明:动画和电影的画面刷新率为24帧/s,即每秒放映24幅画面,则人眼看到的是连续的画面效果。

CoreAnimation

CoreAnimation分为三大类,分别是CAPropertyAnimation(属性动画)、CAAnimationGroup(动画组)、CATransition(转场动画)。

属性动画

CAPropertyAnimation:属性动画的基类(通过可动画属性进行动画设置),不能直接使用。

CABasicAnimation:基础动画,通过属性修改进行动画参数控制,只有初始状态和结束状态(两个关键帧)。

CAKeyframeAnimation:关键帧动画,同样是通过属性进行动画参数控制,但是同基础动画不同的是它可以有多个状态控制。

动画组

CAAnimationGroup:动画组,动画组是一种组合模式设计,可以通过动画组来进行所有动画行为的统一控制,组中所有动画效果可以并发执行。

转场动画

CATransition:转场动画,主要通过滤镜进行动画效果设置。

CoreAnimation实例

CABasicAnimation

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
scaleAnimation.duration=5.0f;
scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
scaleAnimation.fromValue = @(1);
scaleAnimation.toValue = @(1.5);
scaleAnimation.fillMode = kCAFillModeForwards;
scaleAnimation.removedOnCompletion = NO;
[_aniView.layer addAnimation:scaleAnimation forKey:@"transformscale"];
CABasicAnimation

CAKeyframeAnimation

CAKeyframeAnimation *keyframeAnimation=[CAKeyframeAnimation animationWithKeyPath:@"position"];

NSValue *key1=[NSValue valueWithCGPoint:_aniView.layer.position];
NSValue *key2=[NSValue valueWithCGPoint:CGPointMake(100,100)];
NSValue *key3=[NSValue valueWithCGPoint:CGPointMake(200,100)];
NSValue *key4=[NSValue valueWithCGPoint:CGPointMake(200,500)];
NSArray *values=@[key1,key2,key3,key4];
keyframeAnimation.values=values;
keyframeAnimation.duration=8.0;
keyframeAnimation.beginTime=CACurrentMediaTime();
[_aniView.layer addAnimation:keyframeAnimation forKey:@"KCKeyframeAnimation_Position"];
CAKeyframeAnimation

CAAnimationGroup

-(void)groupAnimation{
    CAAnimationGroup *animationGroup=[CAAnimationGroup animation];
    
    CABasicAnimation *basicAnimation=[self rotationAnimation];
    CAKeyframeAnimation *keyframeAnimation=[self translationAnimation];
    animationGroup.animations=@[basicAnimation,keyframeAnimation];
    
    animationGroup.delegate=self;
    animationGroup.duration=10.0;
    animationGroup.beginTime=CACurrentMediaTime();
    
    [_aniView.layer addAnimation:animationGroup forKey:nil];
}

-(CABasicAnimation *)rotationAnimation{
    CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    CGFloat toValue=M_PI_2*3;
    basicAnimation.toValue=[NSNumber numberWithFloat:M_PI_2*3];
    
    basicAnimation.autoreverses=true;
    basicAnimation.repeatCount=HUGE_VALF;
    basicAnimation.removedOnCompletion=NO;
    
    [basicAnimation setValue:[NSNumber numberWithFloat:toValue] forKey:@"KCBasicAnimationProperty_ToValue"];
    
    return basicAnimation;
}

-(CAKeyframeAnimation *)translationAnimation{
    CAKeyframeAnimation *keyframeAnimation=[CAKeyframeAnimation animationWithKeyPath:@"position"];
   
    NSValue *key1=[NSValue valueWithCGPoint:_aniView.layer.position];
    NSValue *key2=[NSValue valueWithCGPoint:CGPointMake(100,100)];
    NSValue *key3=[NSValue valueWithCGPoint:CGPointMake(200,100)];
    NSValue *key4=[NSValue valueWithCGPoint:CGPointMake(200,500)];
    NSArray *values=@[key1,key2,key3,key4];
    keyframeAnimation.values=values;
    
    [keyframeAnimation setValue:[NSValue valueWithCGPoint:_aniView.layer.position] forKey:@"KCKeyframeAnimationProperty_EndPosition"];
    
    return keyframeAnimation;
}
CAAnimationGroup

CATransition

CATransition *animation = [CATransition animation];
animation.duration = 5.0f;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.type = kCATransitionMoveIn;
animation.subtype = kCATransitionFromTop;
[_aniView.layer addAnimation:animation forKey:nil];
transition

基础部分就先讲到这了,下一篇开始将讲下较复杂、炫酷的动画实现。

相关文章

  • iOS 动画基础总结篇

    iOS 动画基础总结篇 iOS 动画基础总结篇

  • iOS动画

    iOS动画分为基础动画和核心动画 本文发布在http://he8090.cn/2016/07/18/iOS动画/...

  • iOS核心动画总结

    基础概念 iOS图形架构 核心动画是 iOS 和 MacOS 上的图形渲染和动画基础结构,用于为应用的视图和...

  • 1. 控制动画

    《iOS编程》第27章 控制动画 学习笔记 基础动画 关键帧动画

  • 动画

    Core Animation iOS 动画主要是指Core Animation框架, 基础动画(CABasicAn...

  • 动画(二)

    这期动画是对基础动画的一个小结。动画的基本属性请看:iOS动画一 说到总结基础动画再总结下属性吧。想要的动画的动画...

  • iOS Core Animation (一) 基础动画

    iOS核心动画Core Animation分为几类:基础动画、关键帧动画、动画组、转场动画。关系大致如下图: CA...

  • 核心动画一览

    基础 核心动画是 iOS 和 MacOS 上的图形渲染和动画基础结构,用于为应用的视图和其他视觉元素设置动画。 核...

  • iOS动画的基础知识

    前言 相信大部份iOS开发者在实现一些基础动画时会感叹动画API的简便及动画效果的真实性,动画是iOS的一大...

  • iOS动画不响应点击的问题

    iOS动画分为显性动画和隐性动画两种。 显示动画动画分为几类:基础动画、关键帧动画、动画组、转场动画。各个类的关系...

网友评论

    本文标题:iOS动画--基础

    本文链接:https://www.haomeiwen.com/subject/qlsprttx.html