效果图
扫二维码.gif 扫条码.gif这个网站可以生成二维码:
二维码生成网站
借助的三方库:
使用方法:
1. 为适配iOS10+,将权限打开
PS:常用权限:
<key>NSAppleMusicUsageDescription</key>
<string>App需要您的同意,才能访问媒体资料库</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能访问蓝牙</string>
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能访问日历</string>
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能访问相机</string>
<key>NSHealthShareUsageDescription</key>
<string>App需要您的同意,才能访问健康分享</string>
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的同意,才能访问健康更新 </string>
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始终访问位置</string>
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能访问位置</string>
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能访问麦克风</string>
<key>NSMotionUsageDescription</key>
<string>App需要您的同意,才能访问运动与健身</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能访问相册</string>
<key>NSRemindersUsageDescription</key>
<string>App需要您的同意,才能访问提醒事项</string>
2. 导入这个库
pod 'QRCodeReaderViewController', '~> 4.0.2'
3. 使用
- 创建
#pragma mark - 扫描二维码或条码
/** 扫描二维码或条码 */
- (void)scan{
// Create the reader object
QRCodeReader *reader = [QRCodeReader readerWithMetadataObjectTypes:@[AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code, AVMetadataObjectTypeQRCode]];
// Instantiate the view controller
QRCodeReaderViewController *vc = [QRCodeReaderViewController readerWithCancelButtonTitle:@"取消" codeReader:reader startScanningAtLoad:YES showSwitchCameraButton:YES showTorchButton:YES];
// Set the presentation style
vc.modalPresentationStyle = UIModalPresentationPopover;
// Define the delegate receiver
vc.delegate = (id)self;
[self presentViewController:vc animated:YES completion:nil];
}
- 然后在它的代理方法里面进行后续处理
#pragma mark - 二维码扫描相关代理方法
// 扫描成功
- (void)reader:(QRCodeReaderViewController *)reader didScanResult:(NSString *)result
{
[reader stopScanning]; // 停止扫描
[SVProgressHUD showSuccessWithStatus:[NSString stringWithFormat:@"扫描结果:%@",result]];
}
// 取消扫描
- (void)readerDidCancel:(QRCodeReaderViewController *)reader
{
[reader dismissViewControllerAnimated:YES completion:^{
[SVProgressHUD showInfoWithStatus:@"取消扫描"];
}];
}
4. 对三方库的修改
注:没修改前只能扫二维码,不能扫条码,修改后都能扫了。
修改1
修改2
Demo
详情请查看demo
二维码\条码扫描小demo
鸣谢
感谢欧阳大神的指点:@moonCoder 😄
补充
后面测试的时候发现不是所有的条码都能扫描,于是百度了一下发现:
为了可以扫描尽可能多的条码,就在数组中把所有类型都加上了:
注:pod中的两个文件都要加。(已更新GitHub)
这样就可以扫描更多种类的条码了。
最后注意一点:对于要手动修改的三方库,最好不要用CocoaPods管理,万一更新的时候把你的代码清理掉就不好耍了。😅(我这里做了下反面教材)
网友评论