码迷,mamicode.com
首页 > 其他好文 > 详细

(一二一)核心动画基础

时间:2017-05-22 12:00:35      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:复位   指定   war   position   贝塞尔   view   nil   fork   forward   

核心动画基于QuartzCore框架,仅仅能用于CALayer,能够实现3D效果。它在子线程中运行动画,不会堵塞主线程。

要实现核心动画,主要使用CABasicAnimation实现单步动画、使用CAKeyframeAnimation实现帧动画。

动画的主要属性有duration、keyPath、value、repeatCount等。

动画运行完成后默认会复位,要取消复位,须要下面两行代码:

anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;

要实现单步动画。使用CABasicAnimation对象就可以:

利用keyPath指定操作的属性,使用toValue指定变化到的值。

CABasicAnimation *anim = [CABasicAnimation animation];
anim.duration = 0.5f;
anim.keyPath = @"transform";
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI, 0, 1, 0)];
anim.repeatCount = 100;
// 动画默认会复位。要取消复位,首先禁止动画移除。然后设置保持新位置。
anim.removedOnCompletion = NO;
anim.fillMode = kCAFillModeForwards;
[_blueView.layer addAnimation:anim forKey:nil];

要实现帧动画,通过CAKeyframeAnimation对象。通过多个value指定动作,或者通过贝塞尔曲线指定路径都能够:

多个value:

CAKeyframeAnimation *anim2 = [CAKeyframeAnimation animation];
anim2.duration = 0.5f;
anim2.keyPath = @"position";
anim2.repeatCount = 100;
NSValue *p1 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(50, 0, 0)];
NSValue *p2 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)];
NSValue *p3 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(-50, 0, 0)];
NSValue *p4 = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)];
anim2.values = @[p1,p2,p3,p4];
anim2.removedOnCompletion = NO;
anim2.fillMode = kCAFillModeForwards;

路径:

CAKeyframeAnimation *anim2 = [CAKeyframeAnimation animation];
anim2.duration = 0.5f;
anim2.keyPath = @"position";
anim2.repeatCount = 100;
anim2.removedOnCompletion = NO;
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(100,100,200,200)];
anim2.path = path.CGPath;
anim2.fillMode = kCAFillModeForwards;
不要忘记把动画加入到layer。

(一二一)核心动画基础

标签:复位   指定   war   position   贝塞尔   view   nil   fork   forward   

原文地址:http://www.cnblogs.com/jhcelue/p/6888449.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!