首页 > 移动平台 > 详细

iOS 实现类似雷达效果的核心代码

时间:2016-01-16 11:55:26      阅读:405      评论:0      收藏:0      [点我收藏+]
 1 -(void)drawRect:(CGRect)rect
 2 {
 3     [[UIColor clearColor]setFill];
 4     UIRectFill(rect);
 5     NSInteger pulsingCount = 3;
 6     double animationDuration = 2;
 7     
 8     CALayer * animationLayer = [[CALayer alloc]init];
 9     self.animationLayer = animationLayer;
10     
11     for (int i = 0; i < pulsingCount; i++) {
12         CALayer * pulsingLayer = [[CALayer alloc]init];
13         pulsingLayer.frame = CGRectMake(0, 0, rect.size.width, rect.size.height);
14         pulsingLayer.backgroundColor = [UIColor colorWithRed:92.0/255.0 green:181.0/255.0 blue:217.0/255.0 alpha:1.0].CGColor;
15         pulsingLayer.borderColor = [UIColor colorWithRed:92.0/255.0 green:181.0/255.0 blue:217.0/255.0 alpha:1.0].CGColor;
16         pulsingLayer.borderWidth = 1.0;
17         pulsingLayer.cornerRadius = rect.size.height/2;
18         
19         CAMediaTimingFunction * defaultCurve = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
20         
21         CAAnimationGroup * animationGroup = [[CAAnimationGroup alloc]init];
22         animationGroup.fillMode = kCAFillModeBoth;
23         animationGroup.beginTime = CACurrentMediaTime() + (double)i * animationDuration/(double)pulsingCount;
24         animationGroup.duration = animationDuration;        animationGroup.repeatCount = HUGE_VAL;
25         animationGroup.timingFunction = defaultCurve;
26         
27         CABasicAnimation * scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
28         scaleAnimation.autoreverses = NO;
29         scaleAnimation.fromValue = [NSNumber numberWithDouble:0.2];
30         scaleAnimation.toValue = [NSNumber numberWithDouble:1.0];
31         
32         CAKeyframeAnimation * opacityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
33         opacityAnimation.values = @[[NSNumber numberWithDouble:1.0],[NSNumber numberWithDouble:0.5],[NSNumber numberWithDouble:0.3],[NSNumber numberWithDouble:0.0]];
34         opacityAnimation.keyTimes = @[[NSNumber numberWithDouble:0.0],[NSNumber numberWithDouble:0.25],[NSNumber numberWithDouble:0.5],[NSNumber numberWithDouble:1.0]];
35         animationGroup.animations = @[scaleAnimation,opacityAnimation];
36         
37         [pulsingLayer addAnimation:animationGroup forKey:@"pulsing"];
38         [animationLayer addSublayer:pulsingLayer];
39     }
40     self.animationLayer.zPosition = -1;//重新加载时,使动画至底层
41     [self.layer addSublayer:self.animationLayer];
42     
43     CALayer * thumbnailLayer = [[CALayer alloc]init];
44     thumbnailLayer.backgroundColor = [UIColor whiteColor].CGColor;
45     CGRect thumbnailRect = CGRectMake(0, 0, 46, 46);
46     thumbnailRect.origin.x = (rect.size.width - thumbnailRect.size.width)/2.0;
47     thumbnailRect.origin.y = (rect.size.height - thumbnailRect.size.height)/2.0;
48     thumbnailLayer.frame = thumbnailRect;
49     thumbnailLayer.cornerRadius = 23.0;
50     thumbnailLayer.borderWidth = 1.0;
51     thumbnailLayer.masksToBounds = YES;
52     thumbnailLayer.borderColor = [UIColor whiteColor].CGColor;
53     UIImage * thumbnail = self.thumbnailImage;
54     thumbnailLayer.contents = (id)thumbnail.CGImage;
55     thumbnailLayer.zPosition = -1;
56     [self.layer addSublayer:thumbnailLayer];
57 }

技术分享技术分享

iOS 实现类似雷达效果的核心代码

原文:http://www.cnblogs.com/machao/p/5135203.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!