iOS程序猿iOS学习开发iOS开发知识小集

iOS原生二维码生成与扫描

2019-02-27  本文已影响8人  kingsic

之前写过一篇关于 SGQRCode 的文章介绍,当时是使用 Delegate 设计模式处理的,后来由于有开发者反馈以及自我学习提升后便使用了 Block 进行了一次版本重构

二维码扫描相关代码

__weak typeof(self) weakSelf = self;

/// 创建二维码扫描
SGQRCodeObtainConfigure *configure = [SGQRCodeObtainConfigure QRCodeObtainConfigure];
[obtain establishQRCodeObtainScanWithController:self configure:configure];
// 二维码扫描回调方法
[obtain setBlockWithQRCodeObtainScanResult:^(SGQRCodeObtain *obtain, NSString *result) {
    <#code#>
}];
// 二维码扫描开启方法: 需手动开启
[obtain startRunningWithBefore:^{
    // 在此可添加 HUD
} completion:^{
    // 在此可移除 HUD
}];
// 根据外界光线强弱值判断是否自动开启手电筒
[obtain setBlockWithQRCodeObtainScanBrightness:^(SGQRCodeObtain *obtain, CGFloat brightness) {
    <#code#>
}];

/// 从相册中读取二维码    
[obtain establishAuthorizationQRCodeObtainAlbumWithController:self];
// 从相册中读取图片上的二维码回调方法
[obtain setBlockWithQRCodeObtainAlbumResult:^(SGQRCodeObtain *obtain, NSString *result) {
    <#code#>
}];

a. 相对之前的 Delegate ,这里没有多余的遵循代理以及实现代理方法,只需要短短的几句话便可实现 iOS 原生二维码的扫描相关技术;这里新增 SGQRCodeObtainConfigure 配置类,这样做的好处是对二维码相关设置更加灵活,当然也可以不用增加此类的,直接在创建的时候实现相关方法也可以做到一样的灵活,之所以这样做是因为让 SGQRCodeObtain 头文件更加明了,减少使用者不必要的时间投入

b. 现在想要实现二维码扫描必须手动开启。由于二维码开启的过程是非常耗时,目前只有支付宝和微信能够做到第一次开启瞬间进入,其他的 app 第一次进入都会存在卡顿现象;这里内部使用的是异步开启二维码并回到主线程,给开发者提供了开启之前需要做的事情以及开启之后要做的事情,像其他的 app 添加一个 HUD 过渡一下用户体验会更好

实现效果图如下

sorgle.png sorgle2.png

二维码生成相关方法

/// 常规二维码
_imageView.image = [SGQRCodeObtain generateQRCodeWithData:@"https://github.com/kingsic" size:size];

/// 带 logo 的二维码
_imageView.image = [SGQRCodeObtain generateQRCodeWithData:@"https://github.com/kingsic" size:size logoImage:logoImage ratio:ratio];

主要就是对生成带 logo 二维码方法的优化处理

最后

a. 这里只是简单的对 SGQRCode 的介绍,案例代码提供的都是非常详细的,如在使用的过程中遇到问题希望多了解一下相关代码以及搜索相关关于 iOS 原生二维码相关文章的介绍,在对 iOS 二维码做了一定初步的了解之后再使用该框架会更好

b. 更多的内容介绍请访问 GitHub

上一篇 下一篇

猜你喜欢

热点阅读