Oc 二维码的扫描-ZBar与生成
如今二維碼隨處可見,無論是實物商品還是各種禮券都少不了二維碼的身影。而手機等移動設備又成為二維碼的一個很好的應用平臺,不管是生成二維碼還是掃碼二維碼。
1.前言
目前市場主流APP里,二維碼/條形碼集成主要分兩種表現形式來集成:
a. 一種是調用手機攝像頭并打開系統照相機全屏去拍攝
b. 一種是自定義照相機視圖的frame,自己控制并添加相關掃碼指南
今天我就用ZBarSDK來實現上訴兩種主流集成方式,與大家共同交流學習/
2.第一步導入ZBarSDK
可以從github上下載好ZBarSDK,導入項目,并且導入相關iOS.framework 如圖:
我們還需要修改幾個地方防止報錯
1.需要關閉Enable Bitcode
2.需要添加info.plist 文件相機權限
添加key字段NSCameraUsageDescription,string類型,value字段是給用戶的提示文字,例如“我們需要使用您的相機“
3.需要關閉Build Active Architecture Only和刪除arm64
3.集成掃描二維碼/條形碼
3.1.調用手機攝像頭并打開系統照相機全屏去拍攝
實現效果圖: 1.一個按鈕“掃我” —— 2.點擊后打開系統照相機 —— 3.進入全屏拍攝,拍攝二維碼 —— 4.識別成功自動關閉照相機
3.1.1.導入#import?“ZBarSDK.h” 然后實現相關協議
調用系統相機全屏拍攝,使用的協議是,自定義相機窗口使用的是
在按鈕“掃我”的click方法里實現相關細節
- (void)click {//初始化相機控制器ZBarReaderViewController *reader = [ZBarReaderViewController new];//設置代理reader.readerDelegate = self;//基本適配reader.supportedOrientationsMask = ZBarOrientationMaskAll;//二維碼/條形碼識別設置ZBarImageScanner *scanner = reader.scanner;[scanner setSymbology: ZBAR_I25config: ZBAR_CFG_ENABLEto: 0];//彈出系統照相機,全屏拍攝[self presentModalViewController: readeranimated: YES]; }.實現代理方法
不同版本代理有不同的方法
1.
2.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {id<NSFastEnumeration> results =[info objectForKey:ZBarReaderControllerResults];ZBarSymbol *symbol = nil;for (symbol in results)break;[picker dismissViewControllerAnimated:YES completion:nil];NSString *text = symbol.data;NSLog(@"%@",text); }自定義照相機視圖的frame,自己控制并添加相關掃碼指南
調用系統相機全屏拍攝,使用的協議是,自定義相機窗口使用的是
#import "ZBarSDK.h"@interface ViewController ()<ZBarReaderDelegate,ZBarReaderViewDelegate>在按鈕“掃我”的click方法里實現相關細節
- (void)click {//初始化照相機窗口ZBarReaderView *readview = [ZBarReaderView new];//自定義大小readview.frame = CGRectMake(100, 100, 300, 300);//自定義添加相關指示.........發揮各自的APP的想象力//此處省略美化10000行代碼...................//………………………..// 好進入正題—— 接著設置好代理readview.readerDelegate = self;//將其照相機拍攝視圖添加到要顯示的視圖上[self.view addSubview:readview];//二維碼/條形碼識別設置ZBarImageScanner *scanner = readview.scanner;[scanner setSymbology: ZBAR_I25config: ZBAR_CFG_ENABLEto: 0];//啟動,必須啟動后,手機攝影頭拍攝的即時圖像菜可以顯示在readview上[readview start];}實現代理方法
-(void)readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage:(UIImage *)image {ZBarSymbol *symbol = nil;for (symbol in symbols)break;NSString *text = symbol.data;}生成二維碼SDK的Dome“QRCode”中制作libqrencode庫文件
1.制作二維碼/*字符轉二維碼
導入 libqrencode文件
添加#import “QRCodeGenerator.h”
#import "QRCodeGenerator.h"@property (strong , nonatomic) UIImageView* qRImageView;- (void)viewDidLoad{[super viewDidLoad];self.qRImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)];[self.view addSubview:self.qRImageView];}-(IBAction)qrBtnPress:(id)sender{self.qRImageView.image = [QRCodeGenerator qrImageForString:@"二維碼存儲的字符串信息 asddsdd" imageSize:self.qRImageView.bounds.size.width];}總結
以上是生活随笔為你收集整理的Oc 二维码的扫描-ZBar与生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多项式——乘法逆元
- 下一篇: 惠普HP Scanjet 9000 扫描