IOS学习笔记(四)Core Animation

所有核心动画的动画类都是从 CAAnimation 类继承而来 。核心动画额外提供了一系列抽象的和细化的动画类,比如:

CATransition 提供了一个图层变化的过渡效果,它能影响图层的整个内容。 动画进行的时候淡入淡出(fade)、推(push)、显露(reveal)图层的内容。
CAAnimationGroup 允许一系列动画效果组合在一起,并行显示动画。

CAPropertyAnimation 是一个抽象的子类,它支持动画的显示图层的关键路径中指定的属性

CABasicAnimation 简单的为图层的属性提供修改。

 1 -(void)doOpacity//改变透明度
 2 {
 3     //需要使用CABasicAnimation类
 4     //1.layer动画流程 创建一个动画 设置相关参数 为layer添加动画
 5     CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
 6     [animation setFromValue:[NSNumber numberWithFloat:1.0]];
 7     [animation setToValue:[NSNumber numberWithFloat:0]];
 8     [animation setDuration:2.0];
 9     [animation setRepeatDuration:20.0];
10    // [animation setRepeatCount:5];
11     [animation setAutoreverses:YES];
12     [animation setDuration:2.0];
13     [animation setRepeatDuration:20.0];
14     //[animation setRepeatCount:5];
15     [bigImage.layer addAnimation:animation forKey:@"abc"];
16 }

 

CAKeyframeAnimation 支持关键帧动画,你可以指定的图层属性的关键路径

 1 -(void)doKeyFrameAnimation
 2 {
 3     CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
 4     NSArray *values = [NSArray arrayWithObjects:[NSValue valueWithCGPoint:CGPointMake(100, 120)],[NSValue valueWithCGPoint:CGPointMake(140, 180)],[NSValue valueWithCGPoint:CGPointMake(130, 160)],[NSValue valueWithCGPoint:CGPointMake(120, 140)],[NSValue valueWithCGPoint:CGPointMake(0,300)], nil];
 5     [animation setValues:values];
 6     
 7     NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.1],[NSNumber numberWithFloat:0.3], [NSNumber numberWithFloat:0.6],[NSNumber numberWithFloat:0.9],
 8                        [NSNumber numberWithFloat:1],nil];//完成10%,30%,60%,90%,100%
 9     [animation setKeyTimes:times];
10     [animation setDuration:10];
11     [animation setRepeatCount:10];
12     [bigImage.layer addAnimation:animation forKey:@"1"];
13 }

 

动画,包括动画的每个阶段的价值,以及关键帧时间和计时功能的一系列值。在 动画运行是,每个值被特定的插入值替代。 

Core Animation使用了setType与setSubtype组合,这使用个比较保险,因为他的参数就是官方API里定义的,他们的参数说明可以参考如下:

  1. setType:可以返回四种类型:  
  2. kCATransitionFade淡出  
  3. kCATransitionMoveIn覆盖原图  
  4. kCATransitionPush推出  
  5. kCATransitionReveal底部显出来  
  6. setSubtype:也可以有四种类型:  
  7. kCATransitionFromRight;  
  8. kCATransitionFromLeft(默认值)  
  9. kCATransitionFromTop;  
  10. kCATransitionFromBottom  


还有一种设置动画类型的方法,不用setSubtype,只用setType:

 [animation setType:@"suckEffect"];  


这里的suckEffect就是效果名称,可以用的效果主要有:

    1. pageCurl   向上翻一页  
    2. pageUnCurl 向下翻一页  
    3. rippleEffect 滴水效果  
    4. suckEffect 收缩效果,如一块布被抽走  
    5. cube 立方体效果  
    6. oglFlip 上下翻转效果  

 

原文地址:https://www.cnblogs.com/worldtraveler/p/2689333.html