首页 > 代码库 > 显示脉冲效果的PulsingView
显示脉冲效果的PulsingView
显示脉冲效果的PulsingView
效果如下:
源码:
PulsingView.h 与 PulsingView.m
//// PulsingView.h// PulsingView//// Created by YouXianMing on 14/10/29.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import <UIKit/UIKit.h>@interface PulsingView : UIView/** * startScale与endScale需要设置值 */@property (nonatomic, assign) CGFloat startScale;@property (nonatomic, assign) CGFloat endScale;/** * 动画时间 */@property (nonatomic, assign) NSTimeInterval duration;/** * 最高程度的alpha */@property (nonatomic, assign) CGFloat maxAlpha;/** * 用来做动画的view */@property (nonatomic, strong) UIView *inputView;/** * 做动画 */- (void)startAnimation;@end
//// PulsingView.m// PulsingView//// Created by YouXianMing on 14/10/29.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "PulsingView.h"@interface PulsingView ()@end@implementation PulsingView- (void)startAnimation { CGFloat tmpStartScale = (_startScale < 0 ? 0.5 : _startScale); CGFloat tmpEndScale = (_endScale < 0 ? 2 : _endScale); _inputView.transform = CGAffineTransformMake(tmpStartScale, 0, 0, tmpStartScale, 0, 0); _inputView.alpha = ((_maxAlpha <= 0 || _maxAlpha > 1) ? 1: _maxAlpha); [UIView animateWithDuration:(_duration <= 0 ? 1.f : _duration) delay:0.f options:UIViewAnimationOptionCurveEaseOut animations:^{ _inputView.transform = CGAffineTransformMake(tmpEndScale, 0, 0, tmpEndScale, 0, 0); _inputView.alpha = 0.f; } completion:nil];}@synthesize inputView = _inputView;- (void)setInputView:(UIView *)inputView { _inputView = inputView; inputView.frame = inputView.bounds; // 重设inputView的frame值 self.bounds = inputView.bounds; // 重设view的bounds // 先删除掉所有的子view [[self subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { UIView *tmp = (UIView *)obj; [tmp removeFromSuperview]; }]; [self addSubview:inputView];}- (UIView *)inputView { return _inputView;}@end
使用:
//// ViewController.m// PulsingView//// Created by YouXianMing on 14/10/29.// Copyright (c) 2014年 YouXianMing. All rights reserved.//#import "ViewController.h"#import "PulsingView.h"#import "YXGCD.h"@interface ViewController ()@property (nonatomic, strong) NSTimer *timer;@property (nonatomic, strong) PulsingView *pulsingView;@property (nonatomic, strong) UIView *circleView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // 设置背景 self.view.backgroundColor = [UIColor blackColor]; // 用来显示的view _circleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; _circleView.backgroundColor = [self randomColor]; _circleView.layer.cornerRadius = 50.f; // 脉冲view _pulsingView = [PulsingView new]; _pulsingView.inputView = _circleView; _pulsingView.startScale = 0.1f; _pulsingView.duration = 1.f; _pulsingView.center = self.view.center; [self.view addSubview:_pulsingView]; // 定时器 _timer = [NSTimer scheduledTimerWithTimeInterval:1.2f target:self selector:@selector(animationTimerEvent) userInfo:nil repeats:YES];}- (void)animationTimerEvent { _circleView.backgroundColor = [self randomColor]; _pulsingView.endScale = arc4random()%200/100.f + 1.f; [_pulsingView startAnimation];}- (UIColor *)randomColor { return [UIColor colorWithRed:arc4random()%255/255.f green:arc4random()%255/255.f blue:arc4random()%255/255.f alpha:1.f];}@end
类的详细细节:
显示脉冲效果的PulsingView
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。