网站大量收购独家精品文档,联系QQ:2885784924

移动应用软件开发综合实训(基于iOS平台)-2017 生成二维码 iOS 二维码扫描.docx

移动应用软件开发综合实训(基于iOS平台)-2017 生成二维码 iOS 二维码扫描.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

您可能关注的文档

文档评论(0)

WanDocx + 关注
实名认证
内容提供者

大部分文档都有全套资料,如需打包优惠下载,请留言联系。 所有资料均来源于互联网公开下载资源,如有侵权,请联系管理员及时删除。

1亿VIP精品文档

相关文档