iOS 原生二维码扫描到的几个类
#import<AVFoundation/AVFoundation.h>
@property (strong,nonatomic)AVCaptureDevice * device;
@property (strong,nonatomic)AVCaptureDeviceInput * input;
@property (strong,nonatomic)AVCaptureMetadataOutput * output;
@property (strong,nonatomic)AVCaptureSession * session;
@property (strong,nonatomic)AVCaptureVideoPreviewLayer * preview;
self.device =[AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
self.input = [AVCaptureDeviceInputdeviceInputWithDevice:self.deviceerror:nil];
self.output = [[AVCaptureMetadataOutputalloc]init];
[self.output setMetadataObjectsDelegate:selfqueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
self.session = [[AVCaptureSessionalloc]init];
[self.session setSessionPreset:AVCaptureSessionPresetHigh];
if ([self.session canAddInput:self.input]) {
[self.session addInput:self.input];
}
if ([_sessioncan AddOutput:self.output]) {
[self.session addOutput:self.output];
}
// 条码类型
AVMetadataObjectTypeQRCode
self.output.metadataObjectTypes =@[AVMetadataObjectTypeQRCode];
//这里需要注意
[self.output setRectOfInterest:CGRectMake((120)/ScreenHigh,((kScreenWidth-200)/2)/ScreenWidth,200/ScreenHigh,200/ScreenWidth)];
// self.preview =[AVCaptureVideoPreviewLayerlayerWithSession:self.session]; self.preview.videoGravity =AVLayerVideoGravityResizeAspectFill;
self.preview.frame =self.view.layer.bounds;
[self.view.layer insertSublayer:self.previewatIndex:0];
// Start
[self.sessionstartRunning];
然后实现 AVCaptureMetadataOutputObjectsDelegate
#pragma mark AVCaptureMetadataOutputObjectsDelegate
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection { NSString *stringValue; if ([metadataObjectscount] >0) {
//停止扫描
[_sessionstopRunning];
AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjectsobjectAtIndex:0];
stringValue = metadataObject.stringValue;
}
}