IOS中的动画——Core Animation

一、基础动画 CABasicAnimation
1  //初始化方式
    CABasicAnimation * cabase=[CABasicAnimation animation];
2  //通过keyPath设置需要实现动画的属性,此处设为bounds
[email protected]"bounds";
3 //通过toValue设置动画结束时候的状态
cabase.toValue=[NSValue valueWithCGRect:CGRectMake(0, 0, 10, 100)];
 //通过byValue设置每次改变的范围
cabase.byValue=[NSValue valueWithCGRect:CGRectMake(0, 0, 10, 100)];
//设置开始时候的状态
    cabase.fromValue=[NSValue valueWithCGPoint:CGPointMake(0, 0)];

4  //设置动画持续的时间
cabase.duration=2;
    //保存动画
   cabase.fillMode=kCAFillModeForwards;
    //保存设置不取消
   cabase.removedOnCompletion=NO;
[_layer addAnimation:cabase forKey:nil];

  案例:通过基础动画实现仿射变换动画

CABasicAnimation * cabase=[CABasicAnimation animation];
[email protected]"transform";
cabase.toValue=[NSValue valueWithCATransform3D:CATransform3DMakeScale(1, 2, 1)];
cabase.duration=2;
cabase.fillMode=kCAFillModeForwards;

    cabase.removedOnCompletion=NO;
[_layer addAnimation:cabase forKey:nil];
二、关键帧动画
1  //初始化方式
CAKeyframeAnimation * keyfram=[CAKeyframeAnimation animation];
2  //通过keyPath设置需要实现动画的属性,此处设为position
[email protected]"position";
3 //设置动画的需要经过的点
    CGPoint  p1=CGPointZero;
    CGPoint  p2=CGPointMake(150, 0);
    CGPoint  p3=CGPointMake(150, 150);
    CGPoint  p4=CGPointMake(0, 150);
    CGPoint  p5=CGPointZero;

    NSValue * v1=[NSValue valueWithCGPoint:p1];
    NSValue * v2=[NSValue valueWithCGPoint:p2];
    NSValue * v3=[NSValue valueWithCGPoint:p3];
    NSValue * v4=[NSValue valueWithCGPoint:p4];
NSValue * v5=[NSValue valueWithCGPoint:p5];
4 //将对应的值添加到动画并且设置动画保留
    [email protected][v1,v2,v3,v4,v5];
    keyfram.duration=1;
    keyfram.fillMode=kCAFillModeForwards;
    keyfram.removedOnCompletion=NO;
[_layer addAnimation:keyfram forKey:nil];

  案例:通过关键帧动画实现图片摇摆

  CAKeyframeAnimation * anima=[CAKeyframeAnimation animation];
    //通过设置放射变换的角度来实现
    [email protected]"transform.rotation";
    float p1=4/180.0*M_PI;
    anima.duration=0.2;
    [email protected][@(-p1),@(p1),@(-p1)];
    anima.fillMode=kCAFillModeForwards;
    anima.removedOnCompletion=NO;
    anima.repeatCount=MAXFLOAT;
    [_layer addAnimation:anima forKey:nil];
_layer.transform=CATransform3DMakeRotation(M_PI, 0, 0, 0);


三、转场动画
1  //初始化方式
CATransition * tran=[CATransition animation];
2  //设置动画效果
[email protected]"rippleEffect";

//常用效果
kCATransitionFade
kCATransitionMoveIn
kCATransitionPush
kCATransitionReveal

3 //设置动画方向
tran.subtype=kCATransitionFromLeft;

//动画方向
kCATransitionFromRight
kCATransitionFromLeft
kCATransitionFromTop
kCATransitionFromBottom

4 //设置动画保留以及动画时长
  tran.fillMode=kCAFillModeForwards;
  tran.removedOnCompletion=NO;
  tran.duration=1;
  [self.myImageView.layer addAnimation:tran forKey:nil];
四、UIView封装动画

  UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持。执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIViewbeginAnimations:nil context:nil]和[UIView commitAnimations]之间

  1、常见方法解析:

//设置动画代理
+ (void)setAnimationDelegate:(id)delegate  

//设置当动画即将开始时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector
+(void)setAnimationWillStartSelector:(SEL)selector   

//设置动画结束时调用方法
+ (void)setAnimationDidStopSelector:(SEL)selector 

//设置动画持续时间
+(void)setAnimationDuration:(NSTimeInterval)duration  

//设置动画延迟
+ (void)setAnimationDelay:(NSTimeInterval)delay   

//设置动画开始时间
+ (void)setAnimationStartDate:(NSDate *)startDate

//设置动画节奏
+ (void)setAnimationCurve:(UIViewAnimationCurve)curve 

//设置动画重复次数
+ (void)setAnimationRepeatCount:(float)repeatCount 

//如果设置为YES,代表动画每次重复执行的效果会跟上一次相反
+(void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses 

// 设置视图view的过渡效果, transition指定过渡类型, cache设置YES代表使用视图缓存,性能较好
+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache 

  2、案例

   //旋转动画
    [UIView beginAnimations:@"roate" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
    [UIView setAnimationDuration:1.5];
     [UIView setAnimationDelegate:self];
    _view.transform=CGAffineTransformRotate(_view.transform, M_PI_2);
    [UIView setAnimationDidStopSelector:@selector(endAnimate)];
[UIView commitAnimations];
    //转场动画
[UIView beginAnimations:@"transition" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:_mainView cache:YES];
    [UIView setAnimationDuration:1.5];
    NSInteger index1=[_mainView.subviews indexOfObject:_view];
    NSInteger index2=[_mainView.subviews indexOfObject:_view2];
    [_mainView exchangeSubviewAtIndex:index1 withSubviewAtIndex:index2];
    [UIView commitAnimations];
				
时间: 2024-11-13 06:55:22

IOS中的动画——Core Animation的相关文章

011-iOS核心动画(Core Animation)

简介 问题一:什么是核心动画(Core Animation)? •Core Animation是非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h> •CALayer中很多属性都可以通过CAAnimation实现动画效果,包括:opacity.position.transform.bounds.contents等(可以在API文档中搜索:CALay

UI进阶--核心动画(Core Animation)

Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h>.开发步骤:①初始化一个动画对象(CAAnimation)并设置一些动画相关属性②添加动画对象到层(CALayer)中,开始执行动画CALayer中很多属性都可以通过CAAnimation实现动画效果,包括:opacity.position.transform.b

iOS核心动画Core Animation(一)

核心动画Core Animation(一) 一.简述 Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程. 二.核心动画常识 列举处核心动画的一些常识知识. 核心动画的本质:在后台移动图层中的内容,  执行完毕后图层本身的位置并没有发生变化. 如果是Xcode6之前的版本,要导入<QuartzCore/QuartzCore.h>框架,

iOS中的动画

什么是动画,动画其实就是我们看到的画面变化的一个过程 那么在iOS中,实现一个最简单的动画需要几步呢? a Simple animation { // 1.开启动画 [UIViewbeginAnimations:nilcontext:nil]; [UIViewsetAnimationDuration:2.0]; // 2.修改属性 CGRect tempF = self.head.frame; tempF.origin.x += 50; tempF.origin.y += 100; tempF.

ios中layer动画和UIView动画代码总结

kCATransitionFade淡出 kCATransitionMoveIn覆盖原图 kCATransitionPush推出 kCATransitionReveal底部显出来 pageCurl   向上翻一页 pageUnCurl 向下翻一页 rippleEffect 滴水效果 suckEffect 收缩效果,如一块布被抽走 cube 立方体效果 oglFlip 上下翻转效果 #pragma mark UIView 动画 - (IBAction)pressClick1:(id)sender {

iOS开发-核心动画(Core Animation)

一.简单介绍 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍. Core Animation是跨平台的,可以用在Mac OS X和iOS平台. Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程. 要注意的是,Core Animation是直接作用在CALayer上的,并非UIView.(CALayer点击此处) 二.Core Animation的使用步骤 初始化一个CAAnimation对象,并设置一些动画

iOS开发之核心动画(Core Animation)

1.概述 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h>. 特别注意的是核心动画的动画效果只是“假象”,产生动画的那个view实际上并未发生任何变化. 开发步骤: 第一步:初始化一个动画对象(CAAnimation)并设置一些动画相关属性. 第二步:添加动画对象到层(CALayer)中,开始执行动画. CAL

(转)iOS动画Core Animation

文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animation负责所有的滚动.旋转.缩小和放大以及所有的iOS动画效果.其中UIKit类通常都有animated:参数部分,它可以允许是否使用动画. Core Animation主要是使用 我们知道每个UIView都关联到一个CALayer对象,CALayer是Core Animation中的图层. Cor

iOS核心动画Core Animation(二)

一. 使用核心动画实现动画效果的步骤 ■1. 创建动画对象 ■2. 设置动画属性 ■3. 把动画对象添加到某个 CALayer 对象上 ■4. 需要停止动画:可以调用 remove 方法移除动画 具体步骤 1.使用它需要先添加QuartzCore.framework框架和引入主头文件<QuartzCore/QuartzCore.h> 2.初始化一个CAAnimation对象,并设置一些动画相关属性 3.通过调用CALayer的addAnimation:forKey:方法增加CAAnimatio