转自https://github.com/kingsic/SGQRCode
#import "SGQRCodeTool.h"//生成二维码
#import "SGQRCode.h"//扫描二维码
UIImageView *imageView2;
//生成二维码
imageView2 = [[UIImageView alloc]initWithFrame:CGRectMake(kViewWidth / 2 +50, kViewHeight / 2 +50, 50, 50)];
imageView2.image = [SGQRCodeTool SG_generateWithDefaultQRCodeData:@"https://github.com/kingsic" imageViewWidth:50];
[self.view addSubview:imageView2];
//二维码识别
将demo中的QRCodeScanningVC和ScanSuccessJumpVC复制进项目
#import "QRCodeScanningVC.h"
-(void)scanningQRCode{
// 1、 获取摄像设备
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (device) {
AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if (status == AVAuthorizationStatusNotDetermined) {
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if (granted) {
dispatch_async(dispatch_get_main_queue(), ^{
QRCodeScanningVC *vc = [[QRCodeScanningVC alloc] init];
[self.navigationController pushViewController:vc animated:YES];
});
SGQRCodeLog(@"当前线程 - - %@", [NSThread currentThread]);
// 用户第一次同意了访问相机权限
SGQRCodeLog(@"用户第一次同意了访问相机权限");
} else {
// 用户第一次拒绝了访问相机权限
SGQRCodeLog(@"用户第一次拒绝了访问相机权限");
}
}];
} else if (status == AVAuthorizationStatusAuthorized) { // 用户允许当前应用访问相机
QRCodeScanningVC *vc = [[QRCodeScanningVC alloc] init];
[self.navigationController pushViewController:vc animated:YES];
} else if (status == AVAuthorizationStatusDenied) { // 用户拒绝当前应用访问相机
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"⚠️ 警告" message:@"请去-> [设置 - 隐私 - 相机 - SGQRCodeExample] 打开访问开关" preferredStyle:(UIAlertControllerStyleAlert)];
UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
}];
[alertC addAction:alertA];
[self presentViewController:alertC animated:YES completion:nil];
} else if (status == AVAuthorizationStatusRestricted) {
NSLog(@"因为系统原因, 无法访问相册");
}
} else {
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"未检测到您的摄像头" preferredStyle:(UIAlertControllerStyleAlert)];
UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
}];
[alertC addAction:alertA];
[self presentViewController:alertC animated:YES completion:nil];
}
}