// // LBXScanLineAnimation.m // // // Created by lbxia on 15/11/3. // Copyright © 2015年 lbxia. All rights reserved. // #import "LBXScanNetAnimation.h" @interface LBXScanNetAnimation() { BOOL isAnimationing; } @property (nonatomic,assign) CGRect animationRect; @property (nonatomic,strong) UIImageView *scanImageView; @end @implementation LBXScanNetAnimation - (instancetype)init{ self = [super init]; if (self) { self.clipsToBounds = YES; [self addSubview:self.scanImageView]; } return self; } - (UIImageView *)scanImageView{ if (!_scanImageView) { _scanImageView = [[UIImageView alloc] init]; } return _scanImageView; } - (void)stepAnimation { if (!isAnimationing) { return; } self.frame = _animationRect; CGFloat scanNetImageViewW = self.frame.size.width; CGFloat scanNetImageH = self.frame.size.height; __weak __typeof(self) weakSelf = self; self.alpha = 0.5; _scanImageView.frame = CGRectMake(0, -scanNetImageH, scanNetImageViewW, scanNetImageH); [UIView animateWithDuration:1.4 animations:^{ weakSelf.alpha = 1.0; _scanImageView.frame = CGRectMake(0, scanNetImageViewW-scanNetImageH, scanNetImageViewW, scanNetImageH); } completion:^(BOOL finished) { [weakSelf performSelector:@selector(stepAnimation) withObject:nil afterDelay:0.3]; }]; } - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{ [self performSelector:@selector(stepAnimation) withObject:nil afterDelay:0.3]; } - (void)startAnimatingWithRect:(CGRect)animationRect InView:(UIView *)parentView Image:(UIImage*)image { [self.scanImageView setImage:image]; self.animationRect = animationRect; [parentView addSubview:self]; self.hidden = NO; isAnimationing = YES; [self stepAnimation]; } - (void)dealloc { [self stopAnimating]; } - (void)stopAnimating { self.hidden = YES; isAnimationing = NO; [NSObject cancelPreviousPerformRequestsWithTarget:self]; } @end