iOS 二维码扫描相关功能实现

2020-01-21 07:13:15丽君

#pragma mark 打开手电筒
+ (void)openFlashLight {
 AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
 NSError *error = nil;
 if ([captureDevice hasTorch]) {
  BOOL locked = [captureDevice lockForConfiguration:&error];
  if (locked) {
   captureDevice.torchMode = AVCaptureTorchModeOn;
   [captureDevice unlockForConfiguration];
  }
 }
}
#pragma mark 关闭手电筒
+ (void)closeFlashLight {
 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
 if ([device hasTorch]) {
  [device lockForConfiguration:nil];
  [device setTorchMode:AVCaptureTorchModeOff];
  [device unlockForConfiguration];
 }
}

QRCodeScanView

这个类是将这个界面单独封装出来,便于自定义

iOS,二维码扫描

在.h文件中有个枚举用来标识二维码扫描四周角标的位置:


typedef enum : NSUInteger {
 CornerLoactionDefault,//默认与边框同中心点
 CornerLoactionInside,//在边框线内部
 CornerLoactionOutside,//在边框线外部
} CornerLoaction;

自定义view各个属性:


@property (nonatomic, strong) UIColor *borderColor;/** 边框颜色*/
@property (nonatomic, assign) CornerLoaction cornerLocation;/** 边角位置 默认default*/
@property (nonatomic, strong) UIColor *cornerColor;/** 边角颜色 默认正保蓝#32d2dc*/
@property (nonatomic, assign) CGFloat cornerWidth;/** 边角宽度 默认2.f*/
@property (nonatomic, assign) CGFloat backgroundAlpha;/** 扫描区周边颜色的alpha 默认0.5*/
@property (nonatomic, assign) CGFloat timeInterval;/** 扫描间隔 默认0.02*/
@property (nonatomic, strong) UIButton *lightBtn;/** 闪光灯*/

暴露外部调用的方法:


/**
 添加定时器
 */
- (void)addTimer;
/**
 移除定时器
 */
- (void)removeTimer;
/**
 根据灯光判断
 */
- (void)lightBtnChangeWithBrightnessValue:(CGFloat)brightnessValue;