// // HMScannerBorder.m // HMQRCodeScanner // // Created by 刘凡 on 16/1/2. // Copyright © 2016年 itheima. All rights reserved. // #import "HMScannerBorder.h" @implementation HMScannerBorder { /// 冲击波图像 UIImageView *scannerLine; } - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self prepareUI]; } return self; } #pragma mark - 扫描动画方法 /// 开始扫描动画 - (void)startScannerAnimating { [self stopScannerAnimating]; [UIView animateWithDuration:3.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ [UIView setAnimationRepeatCount:MAXFLOAT]; scannerLine.center = CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height); } completion:nil]; } /// 停止扫描动画 - (void)stopScannerAnimating { [scannerLine.layer removeAllAnimations]; scannerLine.center = CGPointMake(self.bounds.size.width * 0.5, 0); } #pragma mark - 设置界面 - (void)prepareUI { self.clipsToBounds = YES; // 图像文件包 NSBundle *bundle = [NSBundle bundleForClass:[self class]]; NSURL *url = [bundle URLForResource:@"HMScanner" withExtension:@"bundle"]; NSBundle *imageBundle = [NSBundle bundleWithURL:url]; // 冲击波图像 scannerLine = [[UIImageView alloc] initWithImage:[self imageWithName:@"QRCodeScanLine" bundle:imageBundle]]; scannerLine.frame = CGRectMake(0, 0, self.bounds.size.width, scannerLine.bounds.size.height); scannerLine.center = CGPointMake(self.bounds.size.width * 0.5, 0); [self addSubview:scannerLine]; // 加载边框图像 for (NSInteger i = 1; i < 5; i++) { NSString *imgName = [NSString stringWithFormat:@"ScanQR%zd", i]; UIImageView *img = [[UIImageView alloc] initWithImage:[self imageWithName:imgName bundle:imageBundle]]; [self addSubview:img]; CGFloat offsetX = self.bounds.size.width - img.bounds.size.width; CGFloat offsetY = self.bounds.size.height - img.bounds.size.height; switch (i) { case 2: img.frame = CGRectOffset(img.frame, offsetX, 0); break; case 3: img.frame = CGRectOffset(img.frame, 0, offsetY); break; case 4: img.frame = CGRectOffset(img.frame, offsetX, offsetY); break; default: break; } } } - (UIImage *)imageWithName:(NSString *)imageName bundle:(NSBundle *)imageBundle { NSString *fileName = [NSString stringWithFormat:@"%@@2x", imageName]; NSString *path = [imageBundle pathForResource:fileName ofType:@"png"]; return [[UIImage imageWithContentsOfFile:path] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; } @end