设为首页 加入收藏

TOP

Objective-c 动画(一)
2017-10-13 10:24:19 】 浏览:7897
Tags:Objective-c 动画

            想提高下以后做的应用给客户带去的体验,所以看了几天OC的CAAnimation动画类,也做了几个小案例,下面讲个别案例来做为本文的主要内容。

一:继承结构截图

 

 上面截图中用得最多的类大概就是,CABaseAnimation和 CAKeyframeAnimation,这两个类的最大区别就是对动画的控制,CABaseAnimation 不能在类中增加和控制帧,CAKeyframeAnimation这个类可以在代码中增加和控制帧动画和每帧运行的时间, CAAnimation是所有类的基类,所以它能实现所有类能实现的功能,我做的案例中也用到了这个类, CAAnimationGroup是组动画,可以将其他5动画类的动画,放入它的属性数组,然后增加到动画目标视图的Layer中去,同时实现多个动画效果。

 

二:案例 

   我这里一共贴两个动画的案例,第一个是CAAniamtion的,第二个是CAAnimationGroup组动画,它里面就包含了

CABaseAnimation和CAKeyframeAnimation 

  CAAniamtion动画是为抽奖转盘写的,中奖后从底部弹出提示中奖动画视图, 最后一帧动画主要实现对弹出视图的隐藏,X坐标=设备宽度 Y坐标=0

    1:封装动画方法

- (CAAnimation*)Animation:(CGFloat)axisX jumpValue:(CGFloat)value  thisType:(int)type {
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path,NULL,axisX,DEVICE_Height);
  
    if (type==0) {
        
        CGPathAddLineToPoint(path, NULL, axisX, 283);
       
        
    }
    else if(type==1)
    {
        
        CGPathAddLineToPoint(path, NULL, axisX, 170);
   
        
    }
    else if(type==2)
    {
      
        CGPathAddLineToPoint(path, NULL, axisX, 200);
        
        
    }
    else
    {
       
        CGPathAddLineToPoint(path, NULL, axisX, 283);
    }
  CGPathAddLineToPoint(path, NULL, axisX, 179);
    CGPathAddLineToPoint(path, NULL, axisX, 207);
    CGPathAddLineToPoint(path, NULL, axisX, 187);
    CGPathAddLineToPoint(path, NULL, axisX, 199);
    CGPathAddLineToPoint(path, NULL, axisX, 193);
    CGPathAddLineToPoint(path, NULL, axisX, 195);
    CGPathAddLineToPoint(path, NULL, DEVICE_Width, 0);
     CAKeyframeAnimation *
    animation = [CAKeyframeAnimation
                 animationWithKeyPath:@"position"];
    [animation setPath:path];
    [animation setDuration:1.5];
    [animation setCalculationMode:kCAAnimationLinear];
    NSArray *  arr= [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
                     [NSNumber numberWithFloat:0.12],
                     [NSNumber numberWithFloat:0.24],
                     [NSNumber numberWithFloat:0.36],
                     [NSNumber numberWithFloat:0.48],
                     [NSNumber numberWithFloat:0.60],
                     [NSNumber numberWithFloat:0.72],
                     [NSNumber numberWithFloat:0.5],
                     [NSNumber numberWithFloat:value ],nil];
   
      [animation setKeyTimes:arr];
    [animation setTimingFunctions:[NSArray arrayWithObjects:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut],
                                   [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut], nil]];     animation.delegate=self;
    animation.duration=1.5;
    CFRelease(path);
    return animation;
}
View Code

    2:调用

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
   
     coinViewArray=[[NSMutableArray alloc]init];//这个数组是一个字段,用来保存底部弹出的视图,等动画结束需要将他们移除的
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS开发之——懒加载 下一篇iOS 学习 - 10下载(3) NSURLSessi..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目