- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
iOS 二维码扫描
一、原生二维码扫描
个人是比较支持用原生二维码扫描的,这里也就仅仅以原生二维码扫面为范例。另也有二维码扫描库 ZBarSDK(点这里)和 ZXingObjC(点这里) 。
1.原生扫描用到的几个类
@property (strong,nonatomic)AVCaptureDevice * device;
@property (strong,nonatomic)AVCaptureDeviceInput * input;
@property (strong,nonatomic)AVCaptureMetadataOutput * output;
@property (strong,nonatomic)AVCaptureSession * session;
@property (strong,nonatomic)AVCaptureVideoPreviewLayer * preview;
2.扫描过程
(1)在viewDidLoad里创建它们
// Device
_device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];
// Input
_input = [AVCaptureDeviceInputdeviceInputWithDevice:self.deviceerror:nil];
// Output
_output = [[AVCaptureMetadataOutputalloc]init];
[_outputsetMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];
// Session
_session = [[AVCaptureSessionalloc]init];
[_sessionsetSessionPreset:AVCaptureSessionPresetHigh];
(2)连接输入和输出
if ([_sessioncanAddInput:self.input])
{
[_sessionaddInput:self.input];
}
if ([_sessioncanAddOutput:self.output])
{
[_sessionaddOutput:self.output];
}
(3)设置条码类型
_output.metadataObjectTypes =@[AVMetadataObjectTypeQRCode];
(4)添加扫描画面
_preview =[AVCaptureVideoPreviewLayerlayerWithSession:_session];
_preview.videoGravity =AVLayerVideoGravityResizeAspectFill;
_preview.frame =self.view.layer.bounds;
[self.view.layerinsertSublayer:_previewatIndex:0];
(5)开始扫描
[_sessionstartRunning];
(6)最后实现协议AVCaptureMetadataOutputObjectsDelegate
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
NSString *stringValue;
if ([metadataObjectscount] 0){
//停止扫描
[_sessionstopRunning];
AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjectsobjectAtIndex:0];
stringValue = metadataObject.stringValue;
}
}
到了这一步就可以成功扫描二维码了
还有一个小问题需要说明一下,之前写过一篇限制二维码扫描区域的,在这里稍微提一下。如下图微信扫描,把扫描范围限制在中间的方框内
要想限制二维码扫描区域,需要设置一个参数rectOfInterest 这个参数有点特别,这个参数的react 与平常设置的坐标系是完全相反的,即X与Y互换、W与H互换。
PS: 有好多人问我上图中方形的透明遮罩是怎么弄得,其实我在提供的d
您可能关注的文档
- 虚拟实训 实训攻略 使用微博橱窗做限时秒杀.doc
- 虚拟实训 实训攻略 微博粉丝分析.doc
- 虚拟实训 实训攻略 微博内容分析.doc
- 虚拟实训 实训攻略 微博相关账号分析.doc
- 虚拟实训 实训攻略 文案视觉化缘由和方法.doc
- 虚拟实训 实训攻略 走在高科技前沿的汾酒,开创了“一物一码”新营销 - 副本.doc
- 虚拟现实程序开发 6.物理引擎 6.3 物理材质.docx
- 虚拟现实程序设计基础 虚拟现实程序设计基础 Unity3D中的线性插值Lerp()函数解析.docx
- 虚拟现实程序设计基础 虚拟现实程序设计基础 Unity3D最全碰撞总结.docx
- 虚拟现实图形图像技术 视频帧捕捉 视频帧捕捉.docx
- 2025年广西中考地理二轮复习:专题四+人地协调观+课件.pptx
- 2025年广西中考地理二轮复习:专题三+综合思维+课件.pptx
- 2025年中考地理一轮教材梳理:第4讲+天气与气候.pptx
- 第5讲+世界的居民课件+2025年中考地理一轮教材梳理(商务星球版).pptx
- 冀教版一年级上册数学精品教学课件 第1单元 熟悉的数与加减法 1.1.6 认识1-9 第6课时 合与分.ppt
- 2025年中考一轮道德与法治复习课件:坚持宪法至上.pptx
- 2025年河北省中考一轮道德与法治复习课件:崇尚法治精神.pptx
- 八年级下册第二单元+理解权利义务+课件-2025年吉林省中考道德与法治一轮复习.pptx
- 精品解析:湖南省娄底市2019-2020学年八年级(上)期中考试物理试题(原卷版).doc
- 2025年中考地理一轮教材梳理:第10讲+中国的疆域与人口.pptx
最近下载
- GB 55021-2021 既有建筑鉴定与加固通用规范.pdf VIP
- 非煤矿山安全生产执法检查方案.pptx
- 3DMax中英文对照表2.doc
- 2024年四川省德阳市中考生物试题卷(含答案解析).docx
- 苏教版四下简便计算练习题.doc VIP
- 北京市第一零一中学2023-2024学年八年级下学期期中数学试题(原卷版).pdf VIP
- 2025年单招生活常识题目答案大全 .pdf VIP
- 湖北省武汉市2025届高三上学期元月调考数学试题(学生版+解析版).docx
- 卡萨帝 洗衣机 双子云裳洗干一体机 C8 HU12G1 使用说明.pdf
- 2023届高考英语新时政热点阅读 10 人工智能(含解析).docx
文档评论(0)