iPhone应用程序之CoreAnimation应用和使用方法

移动开发 iOS
本文介绍的是CoreAnimation的应用和使用方法,通过本文的学习,我们可以清楚的去了解CoreAnimation,先来看详细内容。

iPhone应用程序之CoreAnimation应用和使用方法是本文要介绍的内容,CoreAnimation是苹果对用户界面动画的封装,它的framework是QuartzCore.framework。使用时需要将这个库添加的工程,我们一起来看内容详解。

1、CALayerCALayer的绝大多数的属性都支持动画,对这些值直接进行设置会隐式的调用动画效果,只不过动画的持续时间(duration)较 短,几乎看不出效果。如果要达到明显的动画效果,就需要显式的调用动画。

常用的属性:

  1. @property CGRect bounds;   
  2. @property CGPoint position;   
  3. @property CATransform3D transform; 

如何调动画?

  1. - (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key 

其中anim是自己创建的动画对象,继承于CAAnimation。key是动画的键,一般是nil,或自己设定的值,意义不大。

2、CAAnimationCAAnimation是所有动画类的基类,一般不会直接使用。它提供给所有子类的一个很有用的属性是

  1. @property(retain) CAMediaTimingFunction *timingFunction; timingFunction 

是一个CAMediaTimingFunction对象,一般这样创建:

  1. [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];  
  2.  kCAMediaTimingFunctionEaseIn 

可以替换为一下值

  1. :NSString * const kCAMediaTimingFunctionLinear;  
  2.  NSString * const kCAMediaTimingFunctionEaseIn;  
  3.  NSString * const kCAMediaTimingFunctionEaseOut;  
  4.  NSString * const kCAMediaTimingFunctionEaseInEaseOut; 

3、CABaseAnimation基本的动画,直接作用于CALayer的对象的各种属性。 下面是让一个layer由蓝色渐渐变为透明的效果动画

  1. CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];  
  2.  ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];  
  3.  ani.fromValue = [UIColor blueColor].CGColor;  
  4.  ani.toValue = [UIColor clearColor].CGColor;  
  5. ani.duration = 3;   
  6. [view1.layer addAnimation:ani forKey:@"ani1"]; 

指定要进行动画的属性,比如上例中要对layer的backgroundColor属性进行变化。

  1. + (id)animationWithKeyPath:(NSString *)path;  

path指定要变化的属性路径,比如@“bounds”,@“bounds.size.width”等。

这三个属性只需要提供1个或2个就可以了

  1. :@property(retain) id fromValue, toValue, byValue; 

具体的作用是: 如果有fromValue和toValue,那么动画就是由fromValue变化到toValue。

 如果有fromValue和byValue,那么动画就是由fromValue变化到fromValue+byValue。

 如果只有toValue,那么动画就是由当前的值变化到toValue。 如果只有byValue,那么动画就是由当前的值变化到当前值+byValue。

你可以这么想像:当CALayer对象中添加了一个动画后,系统会开启一个定时器,不断刷新layer的属性的值,其值由fromValue和toValue根据一定的插值算法来计算出来的。 只是想像,layer的属性在动画过程中并没有改变,这些显示效果都是由GPU完成的,不会改变layer的属性值,如果必要你必须自 己设定layer的属性。

4、CAKeyframeAnimation关键帧动画 有时你或许需要一个非固定方向的动画,比如让一个layer先向右移动100个像素,然后在向下移动100个像素。这时就可以用关键 帧动画。

  1. CAKeyframeAnimation *ani = [CAKeyframeAnimation animationWithKeyPath:@"position"];   
  2. ani.values = [NSArray arrayWithObjects:  
  3. NSValue valueWithCGPoint:CGPointMake(100,200)],   
  4. [NSValue valueWithCGPoint:CGPointMake(200,200)],  
  5.  [NSValue valueWithCGPoint:CGPointMake(200,300)], nil];  
  6. ani.duration = 3; [view1.layer addAnimation:ani forKey:@"ani2"]; 

6、UIView的动画支持UIView可以直接支持view的动画,可以影响多个View。

动画是线性变化的,默认 动画开始变化慢,越来越快 动画开始变化快,越来越慢 慢入慢出,先慢再快,最后又慢,比较常用

  1. [UIView beginAnimations:nil context:nil];   
  2. [UIView setAnimationDuration:0.3];   
  3. //一些view的操作  
  4. view.frame = xxx; [UIView commitAnimations]; 

小结:iPhone应用程序之CoreAnimation应用和使用方法的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-26 16:33:56

iPhone Delegate

2011-08-10 17:30:50

iphoneThree20

2011-07-21 10:47:37

iPhone Cocoa 委托

2011-08-10 16:08:02

iPhoneProtocol协议

2011-08-08 14:07:49

iPhone开发 字体

2011-08-03 17:27:40

iPhone UIScrollVi

2012-04-26 13:48:56

iPhone应用发布Ad Hoc

2011-08-03 16:45:09

iPhone APNS 推送通知

2023-08-07 09:01:42

Prism 库开源

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-08-27 10:41:41

iPhone核心应用程序

2011-07-20 15:58:58

iPhone 应用程序 生命周期

2011-07-27 17:30:40

iPhone Locate 定位

2011-07-21 15:56:32

iPhone 截屏

2011-07-19 14:36:32

iPhone

2011-08-05 13:49:53

iPhone 应用 开发

2011-08-12 14:54:45

iPhone委托

2011-07-26 11:13:15

iPhone PXL

2011-07-19 10:42:41

iPhone 应用程序 模型

2012-05-24 15:49:35

HTML5
点赞
收藏

51CTO技术栈公众号