在iOS7下扫描二维码

作者: 康富贵 | 来源:发表于2015-04-12 11:53 被阅读1028次
NSError *error;
AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];

if (error)
{
    NSLog(@"%@", [error domain]);
    return;
}

self.captureSession = [[AVCaptureSession alloc] init];
[self.captureSession addInput:input];

AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
[self.captureSession addOutput:captureMetadataOutput];
    
[captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[captureMetadataOutput setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

AVCaptureVideoPreviewLayer *layer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
[layer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[layer setFrame:self.view.layer.bounds];
[self.view.layer addSublayer:layer];
self.videoPreviewLayer = layer;

[self.captureSession startRunning];

一切顺利,扫描的效率很高。

可出现了一个问题,我只想在屏幕中的小框内扫描,而不是整个屏幕都可以扫描,类似于微信的效果。

查看文档后发现AVCaptureMetadataOutput类有一个属性rectOfInterest。

rectOfInterest的默认值是CGRectMake(0,0,1,1)

0和1是相对于屏幕的比例,而不是具体的数值。

而且x和y,width和height的位置都互换了。

添加代码:

CGRect lensRect = self.lensView.frame;

CGFloat screenW = ScreenSize.width;
CGFloat screenH = ScreenSize.height;
CGRect rectInterest = CGRectMake(CGRectGetMinY(lensRect) / screenH,
                                 ((screenW-CGRectGetWidth(lensRect)))/2/screenW,
                                 CGRectGetHeight(lensRect) / screenH,
                                 CGRectGetWidth(lensRect) / screenW);

[captureMetadataOutput setRectOfInterest:rectInterest];

大功告成!

相关文章

  • iOS开发:二维码扫描与生成(扫描篇)

    iOS开发中经常要用到生成二维码与扫描二维码的功能,iOS7开始,系统支持原生的扫描二维码,iOS7 扫描二维码可...

  • 详细易懂的二维码的扫描、识别与生成

    ios7之前我们实现二维码扫描是借助第三方(ZBar,ZXing等)来实现的,在ios7之后系统自己提供二维码扫描...

  • iOS--二维码的扫描

    前面我们介绍了二维码的生成,现在我们介绍一下怎么扫描二维码;在iOS7之前,大部分应用中使用的二维码扫描是ZXin...

  • 二维码扫描

    来源 二维码扫描 ios7之前我们实现二维码扫描一般是借助第三方来实现,但是在ios7之后系统自己提供二维码扫面的...

  • iOS开发之二维码扫描

    iOS开发之二维码扫描 在 iOS7 以前,在IOS中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar...

  • 二维码扫描和创建(上)

    扫描二维码(包括读取和解码) 扫描二维码OC的开源库有ZBar和ZXing。iOS7以后iOS拥有原生的扫码功能。...

  • 在iOS7下扫描二维码

    一切顺利,扫描的效率很高。 可出现了一个问题,我只想在屏幕中的小框内扫描,而不是整个屏幕都可以扫描,类似于微信的效...

  • iOS开发-二维码扫描和应用跳转

    序言 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分...

  • iOS开发之扫描二维码

    自iOS7以后,iOS扫描二维码不需要借助于第三方框架了,苹果在AVFoundation中原生支持了扫描二维码的A...

  • IOS使用ZXing添加二维码功能

    在ios7以后,苹果集成了二维码功能,我本人也更加倾向于使用苹果原生的二维码扫描功能,但是老大非要用zxing这个...

网友评论

  • LamSpeech:你好 假如预览区域不等于屏幕大小rectOfInterest应该怎样计算呢 是按照预览区域的宽高进行计算还是屏幕的宽高

本文标题:在iOS7下扫描二维码

本文链接:https://www.haomeiwen.com/subject/lkkxfttx.html