雷达效果

@interface ViewController ()

{

CALayer *_layer;

CAAnimationGroup *_animaTionGroup;

CADisplayLink *_disPlayLink;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

- (void)startAnimation

{

CALayer *layer = [[CALayer alloc] init];

layer.cornerRadius = [UIScreen mainScreen].bounds.size.width/2;

layer.frame = CGRectMake(0, 0, layer.cornerRadius * 2, layer.cornerRadius * 2);

layer.position = self.view.layer.position;

UIColor *color = [UIColor colorWithRed:arc4random()%10*0.1 green:arc4random()%10*0.1 blue:arc4random()%10*0.1 alpha:1];

layer.backgroundColor = color.CGColor;

[self.view.layer addSublayer:layer];

CAMediaTimingFunction *defaultCurve = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];

_animaTionGroup = [CAAnimationGroup animation];

_animaTionGroup.delegate = self;

_animaTionGroup.duration = 2;

_animaTionGroup.removedOnCompletion = YES;

_animaTionGroup.timingFunction = defaultCurve;

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale.xy"];

scaleAnimation.fromValue = @0.0;

scaleAnimation.toValue = @1.0;

scaleAnimation.duration = 2;

CAKeyframeAnimation *opencityAnimation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];

opencityAnimation.duration = 2;

opencityAnimation.values = @[@0.8,@0.4,@0.0];

opencityAnimation.keyTimes = @[@0,@0.5,@1];

opencityAnimation.removedOnCompletion = YES;

NSArray *animations = @[scaleAnimation,opencityAnimation];

_animaTionGroup.animations = animations;

[layer addAnimation:_animaTionGroup forKey:nil];

[self performSelector:@selector(removeLayer:) withObject:layer afterDelay:1.5];

}

- (void)removeLayer:(CALayer *)layer

{

[layer removeFromSuperlayer];

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

_disPlayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(delayAnimation)];

_disPlayLink.frameInterval = 40;

[_disPlayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

}

- (void)delayAnimation

{

[self startAnimation];

}

- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

[self.view.layer removeAllAnimations];

[_disPlayLink invalidate];

_disPlayLink = nil;

}

时间: 2024-11-03 20:55:49

雷达效果的相关文章

利用Render Texture实现游戏的小雷达效果(摄影机分屏)

最近游戏蛮牛在举办一个活动,就是要做出这样的效果: 题目:实现游戏分屏效果 要求:1.        分屏,且分割线不规则(即非水平或垂直):2.        各屏可单独操作(移动.缩放),操作指该屏整体操作:3.        左(或上)立方体顺时针自转:右(或下)立方体逆时针自转: 一开始以为又要动用我最不熟悉的Shader了,有点怕,后来仔细一想,这不就是跟雷达效果一样的么? 然后立马动手,做一个效果玩玩. 原理很简单,就是弄两个摄影机,一个作为Player的子物体,并放在Player背

雷达效果,

Android仿新浪微博雷达扫描效果 [复制链接]     MR.甲 签到天数: 4 天 连续签到: 1 天 [LV.2]偶尔看看I 3 主题 9 帖子 151 e币 发消息 电梯直达 楼主  发表于 2015-8-31 15:18:14 | 只看该作者  之前在新浪微博看到一个雷达效果,可以查看图 先说说这个效果 1.程序默认提示点击雷达,开始探索 2.当点击雷达,提示正在探索周边的人,同时展示雷达扫描效果,即雷达按钮绕中心旋转,展现波纹达到扫描效果, 3.当触摸雷达时,雷达按钮会缩小,然后手

360手机卫士---扫描杀雷达效果

activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayo

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

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

Launcher定制之 应用分发--高仿APUS桌面,上拉加载应用分发雷达效果

直接上代码, 需要图片资源请到APUS里面去提取. xml: <?xml version="1.0" encoding="utf-8"?> <merge android:layout_width="fill_parent" android:layout_height="100.0dip" xmlns:android="http://schemas.android.com/apk/res/androi

【canvas系列】canvas实现&quot;雷达扫描&quot;效果

今天来讲解"雷达扫描"效果demo,来源于QQ群里边有群友说想要个雷达效果,就尝试写了一下. 效果图: demo链接: https://win7killer.github.io/can_demo/demo/radar.html ******************************************************************** 这个东西,背景圆,坐标.圆圈都很简单实现,arc结合moveTo.lineTo就可以解决,背景色也不是问题,一句带过. 那么

[翻译]Android 5.0之应用中实现材料设计—Material Design

上午的时候在刷Google+,看到了Abraham Williams转发了一篇强文,是Android Developers网站新发的一篇博客—Implementing Material Design in your Android App.觉得很前卫,对于新发布的Android版本号Android 5.0是一个很好的学习和了解的机会,所以就花了些时间把它翻译了下来,希望对自己.对其它人有所启发. 因为翻译Android开发博客和API也只是业余爱好,水平有限,其中不免有不准确的地方,所以把原文地

Android开发优化建议

1.找一些与你想开发的功能类似的代码 2.调整它,尝试让它变成你想要的 3.回顾开发中遇到的问题 4.使用StackOverflow来解决遇到的问题 对每个你想实现的东西重复上述过程.采用这种方法能够激励你,因为你在保持不断迭代更新,在这个过程里面你会学到很多.当然,当你发布应用的时候你还要去做一些更深入的东西. 从一些能够正常编译的代码到成为一个应用程序,这是一个质的飞跃,比起iOS,Android则表现的更加明显.当iOS应用发布的时候,实际上只是在一种设备之间跳跃,对iOS很多机型而言都很

通用窗口类 Inventory Pro 2.1.2 Demo1(下续篇 ),物品消耗扇形显示功能

本篇想总结的是Inventory Pro中通用窗口的具体实现,但还是要强调下该插件的重点还是装备系统而不是通用窗口系统,所以这里提到的通用窗口类其实是通用装备窗口类(其实该插件中也有非装备窗口比如NoticeUI等). 本篇涉及的功能用加出标出,具体的功能如下: 1.实现了两个窗口,通过点击键盘I来,打开或者关闭窗口也就是Toggle功能 2.装备窗口中的物品栏空格数量动态生成可控,可以在属性窗口手动配置 3.窗口具有拖拽功能 4.窗口物品具有拖拽,及窗口间拖拽 5.可以在窗口使用物品的功能,物