之前寫過一篇關(guān)于 SGQRCode 的文章介紹爱只,當時是使用 Delegate 設(shè)計模式處理的皿淋,后來由于有開發(fā)者反饋以及自我學(xué)習提升后便使用了 Block 進行了一次版本重構(gòu)
二維碼掃描相關(guān)代碼
__weak typeof(self) weakSelf = self;
/// 創(chuàng)建二維碼掃描
SGQRCodeObtainConfigure *configure = [SGQRCodeObtainConfigure QRCodeObtainConfigure];
[obtain establishQRCodeObtainScanWithController:self configure:configure];
// 二維碼掃描回調(diào)方法
[obtain setBlockWithQRCodeObtainScanResult:^(SGQRCodeObtain *obtain, NSString *result) {
<#code#>
}];
// 二維碼掃描開啟方法: 需手動開啟
[obtain startRunningWithBefore:^{
// 在此可添加 HUD
} completion:^{
// 在此可移除 HUD
}];
// 根據(jù)外界光線強弱值判斷是否自動開啟手電筒
[obtain setBlockWithQRCodeObtainScanBrightness:^(SGQRCodeObtain *obtain, CGFloat brightness) {
<#code#>
}];
/// 從相冊中讀取二維碼
[obtain establishAuthorizationQRCodeObtainAlbumWithController:self];
// 從相冊中讀取圖片上的二維碼回調(diào)方法
[obtain setBlockWithQRCodeObtainAlbumResult:^(SGQRCodeObtain *obtain, NSString *result) {
<#code#>
}];
a. 相對之前的 Delegate 招刹,這里沒有多余的遵循代理以及實現(xiàn)代理方法,只需要短短的幾句話便可實現(xiàn) iOS 原生二維碼的掃描相關(guān)技術(shù)窝趣;這里新增 SGQRCodeObtainConfigure 配置類疯暑,這樣做的好處是對二維碼相關(guān)設(shè)置更加靈活,當然也可以不用增加此類的哑舒,直接在創(chuàng)建的時候?qū)崿F(xiàn)相關(guān)方法也可以做到一樣的靈活妇拯,之所以這樣做是因為讓 SGQRCodeObtain 頭文件更加明了,減少使用者不必要的時間投入
b. 現(xiàn)在想要實現(xiàn)二維碼掃描必須手動開啟洗鸵。由于二維碼開啟的過程是非常耗時越锈,目前只有支付寶和微信能夠做到第一次開啟瞬間進入,其他的 app 第一次進入都會存在卡頓現(xiàn)象膘滨;這里內(nèi)部使用的是異步開啟二維碼并回到主線程甘凭,給開發(fā)者提供了開啟之前需要做的事情以及開啟之后要做的事情,像其他的 app 添加一個 HUD 過渡一下用戶體驗會更好
實現(xiàn)效果圖如下
二維碼生成相關(guān)方法
/// 常規(guī)二維碼
_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 二維碼方法的優(yōu)化處理
最后
a. 這里只是簡單的對 SGQRCode 的介紹火邓,案例代碼提供的都是非常詳細的丹弱,如在使用的過程中遇到問題希望多了解一下相關(guān)代碼以及搜索相關(guān)關(guān)于 iOS 原生二維碼相關(guān)文章的介紹,在對 iOS 二維碼做了一定初步的了解之后再使用該框架會更好
b. 更多的內(nèi)容介紹請訪問 GitHub