004-核心动画(二)

一、简介

  Core Animation是iOS和OS X平台上负责图形渲染与动画的基础框架。Core Animation可以作用与动画视图或者其他可视元素,为你完成了动画所需的大部分绘帧工作。你只需要配置少量的动画参数(如开始点的位置和结束点的位置)即可使用Core Animation的动画效果。Core Animation将大部分实际的绘图任务交给了图形硬件来处理,图形硬件会加速图形渲染的速度。这种自动化的图形加速技术让动画拥有更高的帧率并且显示效果更加平滑,不会加重CPU的负担而影响程序的运行速度。

二、Core Animation类图以及常用字段

  Core Animation类的继承关系图:

常用属性 
  duration: 动画的持续时间 
  beginTime: 动画的开始时间 
  repeatCount: 动画的重复次数 
  autoreverses: 执行的动画按照原动画返回执行 
  timingFunction: 控制动画的显示节奏系统提供五种值选择,分别是:

    •   kCAMediaTimingFunctionLinear 线性动画
    •   kCAMediaTimingFunctionEaseIn 先慢后快(慢进快出)
    •   kCAMediaTimingFunctionEaseOut 先块后慢(快进慢出)
    •   kCAMediaTimingFunctionEaseInEaseOut 先慢后快再慢
    •   kCAMediaTimingFunctionDefault 默认,也属于中间比较快

  delegate: 动画代理。能够检测动画的执行和结束。

@interface NSObject (CAAnimationDelegate)
 - (void)animationDidStart:(CAAnimation *)anim;
 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;
@end

  path:关键帧动画中的执行路径 
  type: 过渡动画的动画类型,系统提供了四种过渡动画。 
    - kCATransitionFade 渐变效果 
    - kCATransitionMoveIn 进入覆盖效果 
    - kCATransitionPush 推出效果 
    - kCATransitionReveal 揭露离开效果 
  subtype: 过渡动画的动画方向 
    - kCATransitionFromRight 从右侧进入 
    - kCATransitionFromLeft 从左侧进入 
    - kCATransitionFromTop 从顶部进入 
    - kCATransitionFromBottom 从底部进入

三、iOS动画的调用方式

1.UIView代码块的调用

_demoView.frame = CGRectMake(0, SCREEN_HEIGHT/2-50, 50, 50);
[UIView animateWithDuration:1.0f animations:^{
  _demoView.frame = CGRectMake(SCREEN_WIDTH, SCREEN_HEIGHT/2-50, 50, 50);
} completion:^(BOOL finished) {
   _demoView.frame = CGRectMake(SCREEN_WIDTH/2-25, SCREEN_HEIGHT/2-50, 50, 50);
}];

2.UIView 【begin commit】模式

_demoView.frame = CGRectMake(0, SCREEN_HEIGHT/2-50, 50, 50);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
_demoView.frame = CGRectMake(SCREEN_WIDTH, SCREEN_HEIGHT/2-50, 50, 50);
[UIView commitAnimations];

3.使用Core Animation中的类

CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath:@"position"];
anima.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, SCREEN_HEIGHT/2-75)];
anima.toValue = [NSValue valueWithCGPoint:CGPointMake(SCREEN_WIDTH, SCREEN_HEIGHT/2-75)];
anima.duration = 1.0f;
[_demoView.layer addAnimation:anima forKey:@"positionAnimation"];

 

posted @ 2017-01-05 14:42  Frank9098  阅读(80)  评论(0)    收藏  举报