//
|
// 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<LBXScanResult*>*)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
|