You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

4.0 KiB

SGQRCode

Version UIKit Use
3.5x iOS 9.0+ Block
4.x iOS 11.0+ Delegate

主要功能

生成二维码

扫描二维码

捕获内容缩放功能

图片中识别二维码

相机、相册权限判断

根据光线强弱开启关闭手电筒

扫描成功后界面间的逻辑跳转处理

扫描界面可高度自定义(满足所有主流app)

主要类说明

类名 说明
SGScanCode 扫描二维码
SGScanViewConfigure 扫描视图配置
SGScanView 扫描视图
SGPermission 相册、相机权限管理
SGTorch 手电筒管理
SGQRCodeLog 调试日志

SGQRCode 集成流程

手动集成

添加 SGQRCode 文件夹到工程中

通过 CocoaPods 集成

pod 'SGQRCode', '~> 4.1.0'

Info.plist 添加以下字段

NSCameraUsageDescription (相机权限访问)

NSPhotoLibraryUsageDescription (相册权限访问)

引用头文件

#import <SGQRCode/SGQRCode.h>

扫描二维码相关代码

// 创建二维码扫描类
scanCode = [SGScanCode scanCode];

// 预览视图,必须设置
scanCode.preview = self.view;

// 遵循 SGScanCodeDelegate
scanCode.delegate = self;

// 遵循 SGScanCodeSampleBufferDelegate
scanCode.sampleBufferDelegate = self;

// 开启扫描
[scanCode startRunning];

// 结束扫描
[scanCode stopRunning];

Delegate 方法

// SGScanCodeDelegate
- (void)scanCode:(SGScanCode *)scanCode result:(NSString *)result {
    <#code#>
}

// SGScanCodeSampleBufferDelegate
- (void)scanCode:(SGScanCode *)scanCode brightness:(CGFloat)brightness {
    <#code#>
}

图片中识别二维码方法

[scanCode readQRCode:image completion:^(NSString *result) {
    <#code#>
}];

生成二维码相关方法

// 普通二维码生成方法
[SGGenerateQRCode generateQRCodeWithData:data size:size];

// 带 logo 的二维码生成方法
[SGGenerateQRCode generateQRCodeWithData:data size:size logoImage:logoImage ratio:ratio];

效果图

问题及解决方案

  • 若在使用 CocoaPods 安装第三方时,出现 [!] Unable to find a specification for SGQRCode 提示时,打开终端先输入 pod repo remove master;执行完毕后再输入 pod setup 即可 (可能会等待一段时间)

  • CIDetector 类只能识别图片中的二维码,目前暂不支持识别图片中的条形码 解决方案

更新说明

  • 2021-07-05 :v3.5.1 版本重构:修复 #163 问题,更多内容请在 releases 中查看

  • 2022-07-16 :v4.0.0 版本重构:Delegate 取代 Block,新增手动对焦功能,优化拓展扫描视图,更多内容请在 releases 中查看

  • 2022-07-16 :v4.1.0 优化SGScanView内部代码逻辑,修复无扫描线时,导致程序崩溃问题

License

SGQRCode is released under the Apache License 2.0. See LICENSE for details.