博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CAKeyframeAnimation 关键帧动画
阅读量:5928 次
发布时间:2019-06-19

本文共 6404 字,大约阅读时间需要 21 分钟。

1     UIBezierPath *path = [UIBezierPath bezierPath]; 2     [path moveToPoint:CGPointMake(-40, 100)]; 3     [path addLineToPoint:CGPointMake(360, 100)]; 4     [path addLineToPoint:CGPointMake(360, 200)]; 5     [path addLineToPoint:CGPointMake(-40, 200)]; 6     [path addLineToPoint:CGPointMake(-40, 300)]; 7     [path addLineToPoint:CGPointMake(360, 300)]; 8      9     CAKeyframeAnimation *moveAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];10     moveAnimation.path = path.CGPath;11     moveAnimation.duration = 8.0f;12     moveAnimation.rotationMode = kCAAnimationRotateAuto;13     [shapeLayer addAnimation:moveAnimation forKey:@"moveAnimation"];

 

1     CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 2      3     CATransform3D scale1 = CATransform3DMakeScale(0.5, 0.5, 1); 4     CATransform3D scale2 = CATransform3DMakeScale(1.2, 1.2, 1); 5     CATransform3D scale3 = CATransform3DMakeScale(0.9, 0.9, 1); 6     CATransform3D scale4 = CATransform3DMakeScale(1.0, 1.0, 1); 7      8     NSArray *frameValues = [NSArray arrayWithObjects: 9                             [NSValue valueWithCATransform3D:scale1],10                             [NSValue valueWithCATransform3D:scale2],11                             [NSValue valueWithCATransform3D:scale3],12                             [NSValue valueWithCATransform3D:scale4],13                             nil];14     15     [animation setValues:frameValues];16     17     NSArray *frameTimes = [NSArray arrayWithObjects:18                            [NSNumber numberWithFloat:0.0],19                            [NSNumber numberWithFloat:0.5],20                            [NSNumber numberWithFloat:0.9],21                            [NSNumber numberWithFloat:1.0],22                            nil];23     [animation setKeyTimes:frameTimes];24     25     animation.fillMode = kCAFillModeForwards;26     animation.duration = .25;27     28     [self addAnimation:animation forKey:@"DSPopUpAnimation"];

 

 

基于路径的关键帧动画

1     CGMutablePathRef path = CGPathCreateMutable(); 2      3     CGPathMoveToPoint(path, NULL, 50.0, 120.0); 4     CGPathAddCurveToPoint(path, NULL, 50.0, 275.0, 150.0, 275.0, 150.0, 120.0); 5     CGPathAddCurveToPoint(path,NULL,150.0,275.0,250.0,275.0,250.0,120.0); 6     CGPathAddCurveToPoint(path,NULL,250.0,275.0,350.0,275.0,350.0,120.0); 7     CGPathAddCurveToPoint(path,NULL,350.0,275.0,450.0,275.0,450.0,120.0); 8      9     CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];10     [anim setPath:path];11     [anim setDuration:3.0];12     [anim setAutoreverses:YES];13     CFRelease(path);14     [self.layer addAnimation:anim forKey:@"path"];

 

基于位置点的关键桢动画

1     CGPoint pt0 = CGPointMake(50.0, 120.0); 2     CGPoint pt1 = CGPointMake(50.0, 275.0); 3     CGPoint pt2 = CGPointMake(150.0, 275.0); 4     CGPoint pt3 = CGPointMake(150.0, 120.0); 5     CGPoint pt4 = CGPointMake(150.0, 275.0); 6     CGPoint pt5 = CGPointMake(250.0, 275.0); 7     CGPoint pt6 = CGPointMake(250.0, 120.0); 8     CGPoint pt7 = CGPointMake(250.0, 275.0); 9     CGPoint pt8 = CGPointMake(350.0, 275.0);10     CGPoint pt9 = CGPointMake(350.0, 120.0);11     CGPoint pt10 = CGPointMake(350.0, 275.0);12     CGPoint pt11 = CGPointMake(450.0, 275.0);13     CGPoint pt12 = CGPointMake(450.0, 120.0);14     NSArray *values = [NSArray arrayWithObjects:15                        [NSValue valueWithCGPoint:pt0],16                        [NSValue valueWithCGPoint:pt1],17                        [NSValue valueWithCGPoint:pt2],18                        [NSValue valueWithCGPoint:pt3],19                        [NSValue valueWithCGPoint:pt4],20                        [NSValue valueWithCGPoint:pt5],21                        [NSValue valueWithCGPoint:pt6],22                        [NSValue valueWithCGPoint:pt7],23                        [NSValue valueWithCGPoint:pt8],24                        [NSValue valueWithCGPoint:pt9],25                        [NSValue valueWithCGPoint:pt10],26                        [NSValue valueWithCGPoint:pt11],27                        [NSValue valueWithCGPoint:pt12], nil];28     CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];29     [anim setValues:values];30     [anim setDuration:3.0];31     [anim setAutoreverses:YES];32     33     [self.layer addAnimation:anim forKey:@"path"];

 

旋转180度

1    CAKeyframeAnimation *keyAnim = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; 2             CATransform3D rotation1 = CATransform3DMakeRotation(30 * M_PI/180, 0, 0, -1); 3             CATransform3D rotation2 = CATransform3DMakeRotation(60 * M_PI/180, 0, 0, -1); 4             CATransform3D rotation3 = CATransform3DMakeRotation(90 * M_PI/180, 0, 0, -1); 5             CATransform3D rotation4 = CATransform3DMakeRotation(120 * M_PI/180, 0, 0, -1); 6             CATransform3D rotation5 = CATransform3DMakeRotation(150 * M_PI/180, 0, 0, -1); 7             CATransform3D rotation6 = CATransform3DMakeRotation(180 * M_PI/180, 0, 0, -1); 8              9             [keyAnim setValues:[NSArray arrayWithObjects:10                                 [NSValue valueWithCATransform3D:rotation1],11                                 [NSValue valueWithCATransform3D:rotation2],12                                 [NSValue valueWithCATransform3D:rotation3],13                                 [NSValue valueWithCATransform3D:rotation4],14                                 [NSValue valueWithCATransform3D:rotation5],15                                 [NSValue valueWithCATransform3D:rotation6],16                                 nil]];17             [keyAnim setKeyTimes:[NSArray arrayWithObjects:18                                   [NSNumber numberWithFloat:0.0],19                                   [NSNumber numberWithFloat:0.2f],20                                   [NSNumber numberWithFloat:0.4f],21                                   [NSNumber numberWithFloat:0.6f],22                                   [NSNumber numberWithFloat:0.8f],23                                   [NSNumber numberWithFloat:1.0f],24                                   nil]];25             [keyAnim setDuration:4];26             [keyAnim setFillMode:kCAFillModeForwards];27             [keyAnim setRemovedOnCompletion:NO];28             [zhiZhenLayer addAnimation:keyAnim forKey:nil];

 

转载于:https://www.cnblogs.com/sell/archive/2013/02/08/2909168.html

你可能感兴趣的文章
js闭包
查看>>
度量时间差
查看>>
网络营销与电子商务
查看>>
MySQL 5.6为什么关闭元数据统计信息自动更新&统计信息收集源代码探索
查看>>
apache prefork模式优化错误
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>
lvs
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
JS页面刷新保持数据不丢失
查看>>
清橙A1202&Bzoj2201:彩色圆环
查看>>
使用data pump工具的准备
查看>>
springMVC---级联属性
查看>>
get和post区别
查看>>
项目总结26:java调用webservice接口(asmx)
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
打造自己博客(wordpress)的wap手机版本
查看>>
Floodlight 在 ChannelPipeline 图
查看>>
leetcode-Word Ladder II
查看>>
VS2017调试闪退之Chrome
查看>>
做移动互联网App,你的测试用例足够吗?
查看>>