現在的App為了推廣一般都有掃描分享功能,沒有接觸過二維碼、條形碼掃描的夥伴一見到要實現這種功能,就有可能覺得高大上,無從下手的感覺。但是自iOS7開始,夥伴們就不用擔心了, 支援iOS7庫原生Api可以實現掃描識別功能。使用原生Api掃描和處理的效率非常高,瞬間完成。本人已經封裝成CKScanHelper,只有複製這兩個檔案到專案,5個方法就可以快速實現掃描。不需要使用第三方掃描,第三方檔案多,配置麻煩,還有版本限制,32位、64位區分。已經上傳github的Sacn-QRCode-BarCode。下面是製作方法,如果不想封裝可以直接找主要程式碼實現。
工具/原料
Mac OSX作業系統:OS X 10.11
編譯環境:Xcode 7.3
方法/步驟
建立工程專案和檢視控制器
建立一個single view工程專案,自動建立一個ViewController試圖控制器。
建立一個CKScanHelper類檔案
建立資原始檔Cocoa Touch Class,下一步選擇繼承於NSObject,名字為CKScanHelper檔案。
配置及宣告物件
1.包含標頭檔案:#import
2.引用協議代理: AVCaptureMetadataOutputObjectsDelegate
實現單例
+ (instancetype)manager
{
static CKScanHelper *singleton = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
singleton = [[CKScanHelper alloc] init];
});
return singleton;
}
例項化物件
注意模擬器時不能掃描,加條件判斷。
配置相容二維碼和條形碼
開始結束掃描
[_session startRunning];
[_session stopRunning];
實現掃描代理方法成功輸出
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection;
優化掃描區域
設定掃描範圍區域 CGRectMake(y的起點/螢幕的高,x的起點/螢幕的寬,掃描的區域的高/螢幕的高,掃描的區域的寬/螢幕的寬)
新增顯示圖層
用來顯示掃描頁面。
標頭檔案宣告
公開外部呼叫方法。
使用方法
包含標頭檔案
#import "CKScanHelper.h"
編輯掃描框,紅色邊框。
開始呼叫
[[CKScanHelper manager] showLayer:self.view];
[[CKScanHelper manager] setScanningRect:scanRect scanView:scanRectView];
[[CKScanHelper manager] setScanBlock:^(NSString *scanResult){
NSLog(@"%@", scanResult);
}];