当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS实现二维码的扫描功能

iOS实现二维码的扫描功能

2019年07月24日  | 移动技术网移动技术  | 我要评论

直接上代码,就不多废话了

//
// viewcontroller.m
// qrcode
//
// created by chenchen on 15/7/30.
// copyright (c) 2015年 bsy. all rights reserved.
//
#import <avfoundation/avfoundation.h>
#import "viewcontroller.h"
@interface viewcontroller ()<avcapturemetadataoutputobjectsdelegate>
 
@end
 
@implementation viewcontroller
 
- (void)viewdidload {
  [super viewdidload];
  
   
   
  avcapturesession *session = [[avcapturesession alloc] init];
  avcapturedevice *device = [avcapturedevice defaultdevicewithmediatype:avmediatypevideo];
  nserror *error = nil;
   
  avcapturedeviceinput *input = [avcapturedeviceinput deviceinputwithdevice:device
                                    error:&error];
  if (input) {
    [session addinput:input];
  } else {
    nslog(@"error: %@", error);
  }
  avcapturemetadataoutput *output = [[avcapturemetadataoutput alloc] init];
  //设置扫码支持的编码格式(如下设置条形码和二维码兼容)
  [output setmetadataobjecttypes:@[avmetadataobjecttypeqrcode,avmetadataobjecttypeean13code, avmetadataobjecttypeean8code, avmetadataobjecttypecode128code]];
  [output setmetadataobjectsdelegate:self queue:dispatch_get_main_queue()];
  [session addoutput:output];
  [session startrunning];
}
 
#pragma mark - avcapturemetadataoutputobjectsdelegate
- (void)captureoutput:(avcaptureoutput *)captureoutput
didoutputmetadataobjects:(nsarray *)metadataobjects
    fromconnection:(avcaptureconnection *)connection
{
  nsstring *qrcode = nil;
  for (avmetadataobject *metadata in metadataobjects) {
    if ([metadata.type isequaltostring:avmetadataobjecttypeqrcode]) {
      // this will never happen; nobody has ever scanned a qr code... ever
      qrcode = [(avmetadatamachinereadablecodeobject *)metadata stringvalue];
      break;
    }
  }
   
  nslog(@"qr code: %@", qrcode);
}
- (void)didreceivememorywarning {
  [super didreceivememorywarning];
  // dispose of any resources that can be recreated.
}
 
@end

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网