iOS原生扫描二维码

自iOS7.0以后,苹果推出了原生的扫描二维码,所以,以前用的都是第三方的,最近做一个项目,就参考了一下官方文档和一些大神的博客,自己也写了一下原生的二维码扫描,废话不多说,下面上代码。
首先需要导入的是         #import<AVFoundation/AVFoundation.h>这个不用多说了吧。
然后开始代码部分:
@interface SCodeController ()<AVCaptureMetadataOutputObjectsDelegate,MBProgressHUDDelegate>

{

AVCaptureDevice * device;
AVCaptureDeviceInput * input;
AVCaptureMetadataOutput * output;
AVCaptureSession * session;
AVCaptureVideoPreviewLayer * preview;

}

  • (void)viewDidLoad {
    [super viewDidLoad];
    [self setupCamera];

}

  • (void)setupCamera
    {
    // Device
    if (!device) {
    device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    }

    // Input
    if (!input) {
    input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    }

    // Output
    if (!output) {
    output = [[AVCaptureMetadataOutput alloc]init];
    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    }

    // Session
    if (!session) {
    session = [[AVCaptureSession alloc]init];
    [session setSessionPreset:AVCaptureSessionPresetHigh];
    }

    if ([session canAddInput:input])
    {
    [session addInput:input];
    }

    if ([session canAddOutput:output])
    {
    [session addOutput:output];
    }

    // 条码类型 AVMetadataObjectTypeQRCode
    output.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];
    // Preview
    if(!preview)
    {
    preview = [AVCaptureVideoPreviewLayer layerWithSession:session];
    preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
    preview.frame = CGRectMake((self.view.bounds.size.width-ScannerSize)*0.5,
    ScannerTop,
    ScannerSize,
    ScannerSize);
    [self.view.layer insertSublayer:preview atIndex:0];
    }
    [session startRunning];
    }

//实现代理方法
- (void)captureOutput:(AVCaptureOutput )captureOutput didOutputMetadataObjects:(NSArray )metadataObjects fromConnection:(AVCaptureConnection *)connection
{

NSString *stringValue;

//判断是否有数据
if ([metadataObjects count] >0){
    AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex:0];
    stringValue = metadataObject.stringValue;
    [session stopRunning];
}

if (stringValue && stringValue.length > 0) {

    //stringValue就是扫描二维码后得到的信息
    NSLog(@"stringValue==%@",stringValue);

}
resultTextView.text = stringValue;

}
以上就是扫描二维码的主要代码,如果需要加上一条线不停的滚动,只需要定时器控制一条线不停的上下滑动即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值