最近在做的项目中需要用到二维码扫描功能
ZXing也有对应的iOS版本,经过了解,ZBar也是一个常用的二维码识别软件,
并分别提供了iOS和Android的SDK可供使用,最终我选择了ZBar进行二维码识别,它的注释清晰,便于使用。
ZBar为我们提供了两种使用方式,一种是直接调用ZBar提供的ZBarReaderViewController打开一个扫描界面,
另一种方式 是使用ZBar提供的可以嵌在其他视图中的ZBarReaderView,实际项目中我们更可能会使用第二种方式,
这可以让我们对界面做更多的定制。
下面介绍第一种使用方法
#import "ViewController.h"
#import "ZBarReaderViewController.h"
@interface ViewController ()<ZBarReaderDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
/*
二维码扫描:
iPhone最低支持版本如果7.0,用AVFoundation
如果是7.0以下,用zbar,zxing
*/
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
/**
二维码扫描控制器
*/
ZBarReaderViewController *readerVC = [[ZBarReaderViewController alloc] init];
//设置代理
readerVC.readerDelegate = self;
[self presentViewController:readerVC animated:YES completion:nil];
}
//完成扫描
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"%@",info[ZBarReaderControllerResults]);
// ZBarSymbolSet *results = info[ZBarReaderControllerResults];
id<NSFastEnumeration> results = info[ZBarReaderControllerResults];
//取值二维码信息
for (ZBarSymbol *symbol in results)
{
//取出二维码信息
NSString *message = symbol.data;
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"扫描完成" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alertView show];
break;
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end