iPhone应用程序之CoreAnimation应用和使用方法是本文要介绍的内容,CoreAnimation是苹果对用户界面动画的封装,它的framework是QuartzCore.framework。使用时须要将这个库添加的工程,咱们一块儿来看内容详解。 算法
一、CALayerCALayer的绝大多数的属性都支持动画,对这些值直接进行设置会隐式的调用动画效果,只不过动画的持续时间(duration)较 短,几乎看不出效果。若是要达到明显的动画效果,就须要显式的调用动画。 动画
经常使用的属性: spa
- @property CGRect bounds;
- @property CGPoint position;
- @property CATransform3D transform;
如何调动画? code
- - (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key
其中anim是本身建立的动画对象,继承于CAAnimation。key是动画的键,通常是nil,或本身设定的值,意义不大。 orm
二、CAAnimationCAAnimation是全部动画类的基类,通常不会直接使用。它提供给全部子类的一个颇有用的属性是 对象
- @property(retain) CAMediaTimingFunction *timingFunction; timingFunction
是一个CAMediaTimingFunction对象,通常这样建立: 继承
- [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
- kCAMediaTimingFunctionEaseIn
能够替换为一下值 animation
- :NSString * const kCAMediaTimingFunctionLinear;
- NSString * const kCAMediaTimingFunctionEaseIn;
- NSString * const kCAMediaTimingFunctionEaseOut;
- NSString * const kCAMediaTimingFunctionEaseInEaseOut;
三、CABaseAnimation基本的动画,直接做用于CALayer的对象的各类属性。 下面是让一个layer由蓝色渐渐变为透明的效果动画 it
- CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
- ani.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
- ani.fromValue = [UIColor blueColor].CGColor;
- ani.toValue = [UIColor clearColor].CGColor;
- ani.duration = 3;
- [view1.layer addAnimation:ani forKey:@"ani1"];
指定要进行动画的属性,好比上例中要对layer的backgroundColor属性进行变化。 io
- + (id)animationWithKeyPath:(NSString *)path;
path指定要变化的属性路径,好比@“bounds”,@“bounds.size.width”等。
这三个属性只须要提供1个或2个就能够了
- :@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的属性。
四、CAKeyframeAnimation关键帧动画 有时你或许须要一个非固定方向的动画,好比让一个layer先向右移动100个像素,而后在向下移动100个像素。这时就能够用关键 帧动画。
- CAKeyframeAnimation *ani = [CAKeyframeAnimation animationWithKeyPath:@"position"];
- ani.values = [NSArray arrayWithObjects:
- NSValue valueWithCGPoint:CGPointMake(100,200)],
- [NSValue valueWithCGPoint:CGPointMake(200,200)],
- [NSValue valueWithCGPoint:CGPointMake(200,300)], nil];
- ani.duration = 3; [view1.layer addAnimation:ani forKey:@"ani2"];
六、UIView的动画支持UIView能够直接支持view的动画,能够影响多个View。
动画是线性变化的,默认 动画开始变化慢,愈来愈快 动画开始变化快,愈来愈慢 慢入慢出,先慢再快,最后又慢,比较经常使用
- [UIView beginAnimations:nil context:nil];
- [UIView setAnimationDuration:0.3];
- //一些view的操做
- view.frame = xxx; [UIView commitAnimations];
小结:iPhone应用程序之CoreAnimation应用和使用方法的内容介绍完了,但愿本文对你有所帮助!