iOS 扫一扫简单实现

_session,_preViewLayer为实例变量

AVCaptureDevice*device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

AVCaptureDeviceInput*input = [AVCaptureDeviceInputdeviceInputWithDevice:deviceerror:nil];

AVCaptureMetadataOutput*output = [[AVCaptureMetadataOutputalloc]init];

[outputsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];

_session= [[AVCaptureSessionalloc]init];

[_sessionaddInput:input];

[_sessionaddOutput:output];

//设置源设置输出数据类型

[outputsetMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

_preViewLayer= [[AVCaptureVideoPreviewLayeralloc]initWithSession:_session];

_preViewLayer.frame=self.view.bounds;

[self.view.layeraddSublayer:_preViewLayer];

[_sessionstartRunning];


代理方法

- (void)captureOutput:(AVCaptureOutput*)captureOutput didOutputMetadataObjects:(NSArray*)metadataObjects fromConnection:(AVCaptureConnection*)connection

{

[self.sessionstopRunning];

[self.preViewLayerremoveFromSuperlayer];

if(metadataObjects.count>0) {

NSString*string = [[metadataObjectslastObject]stringValue];

self.label.text= string;

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容