IOS 二维码扫描

Posted 吴雨欣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS 二维码扫描相关的知识,希望对你有一定的参考价值。

技术分享
//
//  ViewController.m
//  CX 二维码扫描
//
//  Created by ma c on 16/4/12.
//  Copyright ? 2016年 bjsxt. All rights reserved.
//

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    
    
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    //创建捕捉会话
    AVCaptureSession * session = [[AVCaptureSession alloc]init];
    //添加输入设备
    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:@"AVMediaTypeVideo"];
    AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    [session addInput:input];
    //添加输出数据
    AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutput alloc]init];
    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    [session addOutput:output];
    //告诉元数据类型为二维码类型
    //注意该方法在add后 否则崩溃
    //测试需要真机稍有麻烦 就不截图了
    [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
    //添加扫描图层
    AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
    layer.frame = CGRectMake(10,20, self.view.frame.size.width, 400);
    [self.view.layer addSublayer:layer];
    //开始扫描
    [session startRunning];
    
    //下面的方法适当的时候操作
    //停止扫描
//    [session stopRunning];
    //移除图层
//    [layer removeFromSuperlayer];
}
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
    //metadataObjects 为扫描的后的数据
    
    AVMetadataMachineReadableCodeObject * objc = [metadataObjects lastObject];
    //我们想要的结果
    NSLog(@"%@",objc.stringValue);
}
@end
技术分享

以上是关于IOS 二维码扫描的主要内容,如果未能解决你的问题,请参考以下文章

IOS 使用 ZbarSDK 二维码扫描

Zxing QR扫描仪onActivityResult未在片段中调用[重复]

iOS开发--二维码的扫描

iOS系统原生二维码条形码扫描

使用IOS7原生API进行二维码条形码的扫描

iOS 简单易用的二维码扫描及生成二维码三方控件LFQRCode,可灵活自定义UI