iOS实现二维码的扫描功能
直接上代码,就不多废话了
// //ViewController.m //QRCode // //Createdbychenchenon15/7/30. //Copyright(c)2015年BSY.Allrightsreserved. // #import<AVFoundation/AVFoundation.h> #import"ViewController.h" @interfaceViewController()<AVCaptureMetadataOutputObjectsDelegate> @end @implementationViewController -(void)viewDidLoad{ [superviewDidLoad]; AVCaptureSession*session=[[AVCaptureSessionalloc]init]; AVCaptureDevice*device=[AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo]; NSError*error=nil; AVCaptureDeviceInput*input=[AVCaptureDeviceInputdeviceInputWithDevice:device error:&error]; if(input){ [sessionaddInput:input]; }else{ NSLog(@"Error:%@",error); } AVCaptureMetadataOutput*output=[[AVCaptureMetadataOutputalloc]init]; //设置扫码支持的编码格式(如下设置条形码和二维码兼容) [outputsetMetadataObjectTypes:@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code,AVMetadataObjectTypeEAN8Code,AVMetadataObjectTypeCode128Code]]; [outputsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()]; [sessionaddOutput:output]; [sessionstartRunning]; } #pragmamark-AVCaptureMetadataOutputObjectsDelegate -(void)captureOutput:(AVCaptureOutput*)captureOutput didOutputMetadataObjects:(NSArray*)metadataObjects fromConnection:(AVCaptureConnection*)connection { NSString*QRCode=nil; for(AVMetadataObject*metadatainmetadataObjects){ if([metadata.typeisEqualToString:AVMetadataObjectTypeQRCode]){ //Thiswillneverhappen;nobodyhaseverscannedaQRcode...ever QRCode=[(AVMetadataMachineReadableCodeObject*)metadatastringValue]; break; } } NSLog(@"QRCode:%@",QRCode); } -(void)didReceiveMemoryWarning{ [superdidReceiveMemoryWarning]; //Disposeofanyresourcesthatcanberecreated. } @end