用calayer做动画 脉冲

原创 2016年05月31日 09:55:17
//
//  ViewController.m
//  JLPulseAnimation
//
//  Created by iOS on 16/1/20.
//  Copyright © 2016年 iOS. All rights reserved.
//

#import "ViewController.h"

@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 = self.view.bounds.size.width;
    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];
    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;
}


@end
// 版权属于原作者
// http://code4app.com (cn) http://code4app.net (en)
// 发布代码于最专业的源码分享网站: Code4App.com
版权声明:欢迎转载 注明出处

CABasicAnimation 脉冲效果

CABasicAnimation 脉冲效果 1 UIImage *image = [UIImage imageNamed:@"heart.png"]; 2 CALayer *l...
  • yongyinmg
  • yongyinmg
  • 2014年03月04日 18:26
  • 3488

ios雷达脉冲效果

[objc] view plain copy "font-family: Arial, Helvetica, sans-serif; background-color: ...
  • zhao15127334470
  • zhao15127334470
  • 2016年03月28日 11:28
  • 314

iOS中雷达波扩散Layer层动画的实现

iOS中雷达波扩散动画的实现,该动画是一个基于layer层的动画 /*--------------- 扩散动画 ---------------*/    CALayer * _spreadLay...
  • COOL_BEAR_XX
  • COOL_BEAR_XX
  • 2015年04月22日 14:29
  • 5396

Android仿支付宝咻一咻动画

Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上...
  • onceing
  • onceing
  • 2016年08月29日 17:54
  • 1421

ios动画中抖动动画效果的实现与CALayer动画的基本理解

今天漫谈一下ios动画中抖动动画效果的实现,该动画主要具有引人注意的效果,具有灵动性的提示性,它有时便似一个美女在春风中向你招手,有这迷人的微笑与不可抗拒的魔力;有时似一个小动物,那么的可爱那么的讨人...
  • baidu_33735542
  • baidu_33735542
  • 2016年03月27日 23:41
  • 1211

iOS 动画原理与实现--帧动画、逐帧动画、CALayer

这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式。 什么是动画 动画,顾名思义,就是能“动”的画。 人的眼睛对图像有短暂的记忆效应,所以当...
  • u014773226
  • u014773226
  • 2016年12月30日 16:56
  • 1063

CALayer与iOS动画 讲解及使用

iOS CALayer与iOS动画 讲解及使用 关于CoreAnimation 初识CALayer CALayer CAAnimation CAMediaTiming UIView与CALayer动画...
  • zmmzxxx
  • zmmzxxx
  • 2017年07月03日 21:00
  • 269

iOS --- 如何暂停和继续CALayer上的动画

本文主要介绍了如何暂停和继续CALayer的动画. 首先来看CALayer./** The base layer class. **/@interface CALayer : NSObject NSC...
  • icetime17
  • icetime17
  • 2016年08月16日 23:28
  • 2682

【IOS功能实现】之Core Animation动画开发总结(CALayer)

一.重要参数 bounds,frame,position属于基本的几何定位,相互之间数值变化会相互影响 anchorPoint:单位参数(0-1)表示,变形(transform)时候的变换源点 ...
  • xuqiang918
  • xuqiang918
  • 2013年10月22日 11:15
  • 8139

IOS核心动画高级四:视觉效果

转载于:http://blog.csdn.net/weixin_33916814/article/details/73340666 我们在第三章【图层几何学】中讨论了图层的frame,第二章...
  • sd19871122
  • sd19871122
  • 2017年06月19日 14:26
  • 757
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用calayer做动画 脉冲
举报原因:
原因补充:

(最多只允许输入30个字)