前言: 使用CIDetector这个类只能识别二维码图片,条形码目前暂不支持bash
能够经过使用ZBarSDK第三方来识别相册中的二维码或条形码ui
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;
便可, 可是注意:这种方式是拍照识别,不是扫一扫识别;
复制代码