前言: 使用CIDetector这个类只能识别二维码图片,条形码目前暂不支持
可以通过使用ZBarSDK第三方来识别相册中的二维码或条形码
第一步: 导入SDK
pod 'ZBarSDK', '~> 1.3.1'
第二步:
//打开相册
- (void)openPhoto {
//ZBarsSDK初始化
ZBarReaderController *imagePicker = ZBarReaderController.new;
imagePicker.showsHelpOnFail = NO;//禁止显示读取失败页面
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
imagePicker.delegate = self;
imagePicker.allowsEditing = YES;
[self presentViewController:imagePicker animated:YES completion:nil];
}
//选中图片后的处理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey, id> *)info {
id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for (symbol in results) {
break;
}
[picker dismissViewControllerAnimated:YES completion:^{
//扫码信息
NSString *QRCodeString = symbol.data;
NSLog(@"QRCodeString = %@",QRCodeString);
}];
}
备注:如果想通过ZBarSDK来进行拍照识别二维码和条形码也可以,只需将 - (void)openPhoto;中的sourceType改为:
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
即可, 但是注意:这种方式是拍照识别,不是扫一扫识别;