iOS開發?

現在的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試圖控制器。

iOS開發 使用原生Api掃描二維碼和條形碼

建立一個CKScanHelper類檔案

建立資原始檔Cocoa Touch Class,下一步選擇繼承於NSObject,名字為CKScanHelper檔案。

iOS開發 使用原生Api掃描二維碼和條形碼

iOS開發 使用原生Api掃描二維碼和條形碼

配置及宣告物件

1.包含標頭檔案:#import

2.引用協議代理: AVCaptureMetadataOutputObjectsDelegate

iOS開發 使用原生Api掃描二維碼和條形碼

實現單例

+ (instancetype)manager

{

static CKScanHelper *singleton = nil;

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

singleton = [[CKScanHelper alloc] init];

});

return singleton;

}

例項化物件

注意模擬器時不能掃描,加條件判斷。

配置相容二維碼和條形碼

iOS開發 使用原生Api掃描二維碼和條形碼

開始結束掃描

[_session startRunning];

[_session stopRunning];

iOS開發 使用原生Api掃描二維碼和條形碼

實現掃描代理方法成功輸出

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection;

iOS開發 使用原生Api掃描二維碼和條形碼

優化掃描區域

設定掃描範圍區域 CGRectMake(y的起點/螢幕的高,x的起點/螢幕的寬,掃描的區域的高/螢幕的高,掃描的區域的寬/螢幕的寬)

iOS開發 使用原生Api掃描二維碼和條形碼

新增顯示圖層

用來顯示掃描頁面。

iOS開發 使用原生Api掃描二維碼和條形碼

標頭檔案宣告

公開外部呼叫方法。

iOS開發 使用原生Api掃描二維碼和條形碼

使用方法

包含標頭檔案

#import "CKScanHelper.h"

編輯掃描框,紅色邊框。

開始呼叫

[[CKScanHelper manager] showLayer:self.view];

[[CKScanHelper manager] setScanningRect:scanRect scanView:scanRectView];

[[CKScanHelper manager] setScanBlock:^(NSString *scanResult){

NSLog(@"%@", scanResult);

}];

iOS開發 使用原生Api掃描二維碼和條形碼

相關問題答案