// // ScanQRViewController.m // ScanHelperDemo // // Created by zhengrui on 17/2/14. // Copyright © 2017年 zhengrui. All rights reserved. // #import "ScanQRViewController.h" #import "LBXScanResult.h" #import "LBXScanWrapper.h" #import "LBXScanVideoZoomView.h" #import "MyQRViewController.h" @interface ScanQRViewController () @property (nonatomic, strong) LBXScanVideoZoomView *zoomView; @end @implementation ScanQRViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.title = @"扫描MAC地址"; [self setNavigationLeft:@"返回" sel:@selector(backAction)]; if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { self.edgesForExtendedLayout = UIRectEdgeBottom; } self.view.backgroundColor = [UIColor blackColor]; //设置扫码后需要扫码图像 self.isNeedScanImage = YES; } -(void)backAction { //[self.navigationController popToViewController:self animated:YES]; [self dismissViewControllerAnimated:YES completion:nil]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if (_isQQSimulator) { [self drawBottomItems]; [self drawTitle]; [self.view bringSubviewToFront:_topTitle]; } else _topTitle.hidden = YES; } //绘制扫描区域 - (void)drawTitle { if (!_topTitle) { self.topTitle = [[UILabel alloc]init]; _topTitle.bounds = CGRectMake(0, 0, 145, 60); _topTitle.center = CGPointMake(CGRectGetWidth(self.view.frame)/2, 50); //3.5inch iphone if ([UIScreen mainScreen].bounds.size.height <= 568 ) { _topTitle.center = CGPointMake(CGRectGetWidth(self.view.frame)/2, 38); _topTitle.font = [UIFont systemFontOfSize:14]; } _topTitle.textAlignment = NSTextAlignmentCenter; _topTitle.numberOfLines = 0; _topTitle.text = @"将取景框对准二维码或条形码即可自动扫描"; _topTitle.textColor = [UIColor whiteColor]; [self.view addSubview:_topTitle]; } } - (void)cameraInitOver { if (self.isVideoZoom) { [self zoomView]; } } - (LBXScanVideoZoomView*)zoomView { if (!_zoomView) { CGRect frame = self.view.frame; int XRetangleLeft = self.style.xScanRetangleOffset; CGSize sizeRetangle = CGSizeMake(frame.size.width - XRetangleLeft*2, frame.size.width - XRetangleLeft*2); if (self.style.whRatio != 1) { CGFloat w = sizeRetangle.width; CGFloat h = w / self.style.whRatio; NSInteger hInt = (NSInteger)h; h = hInt; sizeRetangle = CGSizeMake(w, h); } CGFloat videoMaxScale = [self.scanObj getVideoMaxScale]; //扫码区域Y轴最小坐标 CGFloat YMinRetangle = frame.size.height / 2.0 - sizeRetangle.height/2.0 - self.style.centerUpOffset; CGFloat YMaxRetangle = YMinRetangle + sizeRetangle.height; CGFloat zoomw = sizeRetangle.width + 40; _zoomView = [[LBXScanVideoZoomView alloc]initWithFrame:CGRectMake((CGRectGetWidth(self.view.frame)-zoomw)/2, YMaxRetangle + 40, zoomw, 18)]; [_zoomView setMaximunValue:videoMaxScale/4]; __weak __typeof(self) weakSelf = self; _zoomView.block= ^(float value) { [weakSelf.scanObj setVideoScale:value]; }; [self.view addSubview:_zoomView]; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap)]; [self.view addGestureRecognizer:tap]; } return _zoomView; } - (void)tap { _zoomView.hidden = !_zoomView.hidden; } - (void)drawBottomItems { if (_bottomItemsView) { return; } self.bottomItemsView = [[UIView alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(self.view.frame) -164, CGRectGetWidth(self.view.frame), 100)]; _bottomItemsView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.6]; [self.view addSubview:_bottomItemsView]; CGSize size = CGSizeMake(65, 87); // self.btnFlash = [[UIButton alloc]init]; // _btnFlash.bounds = CGRectMake(0, 0, size.width, size.height); // _btnFlash.center = CGPointMake(CGRectGetWidth(_bottomItemsView.frame)/2, CGRectGetHeight(_bottomItemsView.frame)/2); // [_btnFlash setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_flash_nor"] forState:UIControlStateNormal]; // [_btnFlash addTarget:self action:@selector(openOrCloseFlash) forControlEvents:UIControlEventTouchUpInside]; // // self.btnPhoto = [[UIButton alloc]init]; // _btnPhoto.bounds = _btnFlash.bounds; // _btnPhoto.center = CGPointMake(CGRectGetWidth(_bottomItemsView.frame)/4, CGRectGetHeight(_bottomItemsView.frame)/2); // [_btnPhoto setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_photo_nor"] forState:UIControlStateNormal]; // [_btnPhoto setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_photo_down"] forState:UIControlStateHighlighted]; // [_btnPhoto addTarget:self action:@selector(openPhoto) forControlEvents:UIControlEventTouchUpInside]; // // self.btnMyQR = [[UIButton alloc]init]; // _btnMyQR.bounds = _btnFlash.bounds; // _btnMyQR.center = CGPointMake(CGRectGetWidth(_bottomItemsView.frame) * 3/4, CGRectGetHeight(_bottomItemsView.frame)/2); // [_btnMyQR setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_myqrcode_nor"] forState:UIControlStateNormal]; // [_btnMyQR setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_myqrcode_down"] forState:UIControlStateHighlighted]; // [_btnMyQR addTarget:self action:@selector(myQRCode) forControlEvents:UIControlEventTouchUpInside]; // // [_bottomItemsView addSubview:_btnFlash]; // [_bottomItemsView addSubview:_btnPhoto]; // [_bottomItemsView addSubview:_btnMyQR]; } - (void)showError:(NSString*)str { [LBXAlertAction showAlertWithTitle:@"提示" msg:str chooseBlock:nil buttonsStatement:@"知道了",nil]; } - (void)scanResultWithArray:(NSArray*)array { if (array.count < 1) { [self popAlertMsgWithScanResult:nil]; return; } //经测试,可以同时识别2个二维码,不能同时识别二维码和条形码 for (LBXScanResult *result in array) { NSLog(@"scanResult:%@",result.strScanned); } LBXScanResult *scanResult = array[0]; NSString*strResult = scanResult.strScanned; self.scanImage = scanResult.imgScanned; if (!strResult) { [self popAlertMsgWithScanResult:nil]; return; } //震动提醒 // [LBXScanWrapper systemVibrate]; //声音提醒 //[LBXScanWrapper systemSound]; [self showNextVCWithScanResult:scanResult]; } - (void)popAlertMsgWithScanResult:(NSString*)strResult { if (!strResult) { strResult = @"识别失败"; } __weak __typeof(self) weakSelf = self; [LBXAlertAction showAlertWithTitle:@"扫码内容" msg:strResult chooseBlock:^(NSInteger buttonIdx) { //点击完,继续扫码 [weakSelf reStartDevice]; } buttonsStatement:@"知道了",nil]; } - (void)showNextVCWithScanResult:(LBXScanResult*)strResult { if (_delegate && [_delegate respondsToSelector:@selector(returnScanQRResult:scanCode:)]) { [_delegate returnScanQRResult:self scanCode:strResult.strScanned]; //[self.navigationController popToViewController:self animated:YES]; [self dismissViewControllerAnimated:YES completion:nil]; } //这里处理扫描结果 // if (self.QRResultBlock) // { // self.QRResultBlock(strResult.strScanned); // } } #pragma mark -底部功能项 //打开相册 - (void)openPhoto { if ([LBXScanWrapper isGetPhotoPermission]) [self openLocalPhoto]; else { [self showError:@" 请到设置->隐私中开启本程序相册权限 "]; } } //开关闪光灯 - (void)openOrCloseFlash { [super openOrCloseFlash]; // if (self.isOpenFlash) // { // [_btnFlash setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_flash_down"] forState:UIControlStateNormal]; // } // else // [_btnFlash setImage:[UIImage imageNamed:@"CodeScan.bundle/qrcode_scan_btn_flash_nor"] forState:UIControlStateNormal]; } #pragma mark -底部功能项 - (void)myQRCode { MyQRViewController *vc = [MyQRViewController new]; [self.navigationController pushViewController:vc animated:YES]; } @end