iOS DeveloperiOS 开发

二维码扫描

2016-08-05  本文已影响78人  石头剪刀布艳艳

很简单,直接代码交流不说废话,上代码

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>

@property(nonatomic,weak) AVCaptureSession *session;

@property(nonatomic,weak) AVCaptureVideoPreviewLayer *layer;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    //1 创建捕捉会话
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    self.session = session;
    
    //2 添加输入设备
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    [self.session addInput:input];
    
    
    //3 添加输出设备
    AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    [self.session addOutput:output];
    
    //设置扫描到的类型为二维码
    [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
    
    //4 添加到扫描图层
    AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
    layer.frame = self.view.bounds;
    [self.view.layer addSublayer:layer];
    self.layer = layer;
    
    //5 开始扫描
    [self.session startRunning];
}

#pragma mark  代理的回调方法
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection {
    if (metadataObjects.count > 0) {
        NSLog(@"扫描到数据");
        //获取扫描结果
        AVMetadataMachineReadableCodeObject *object =metadataObjects.lastObject;
        NSLog(@"%@",object.stringValue);
        //停止扫描
        [self.session stopRunning];
        //移除图层
        [self.layer removeFromSuperlayer];
    }else {
        NSLog(@"没扫描到数据");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读