日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码

發(fā)布時(shí)間:2024/4/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一步:加入框架 AVFoundation.framework

目錄選擇?targets -> Build Phases -> Link Binary with Libraries 后,加入AVFoundation.framework即可

第二步:加入以下代碼,并加入?yún)f(xié)議?AVCaptureMetadataOutputObjectsDelegate,

定義全局變量

var session: AVCaptureSession?; var previewLayer: AVCaptureVideoPreviewLayer?;

在需要使用的地方 使用readQRCode()函數(shù)即可

func readQRCode() {//1.獲取攝像頭設(shè)備var device:AVCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo);//2.設(shè)置輸入var error: NSError?;var input: AVCaptureDeviceInput = AVCaptureDeviceInput.deviceInputWithDevice(device, error: &error) as AVCaptureDeviceInput;if (error != nil) {println("沒有攝像頭\(error?.localizedDescription)");return;}// 3. 設(shè)置輸出(Metadata元數(shù)據(jù))var output: AVCaptureMetadataOutput = AVCaptureMetadataOutput();// 3.1 設(shè)置輸出的代理// 說明:使用主線程隊(duì)列,相應(yīng)比較同步,使用其他隊(duì)列,相應(yīng)不同步,容易讓用戶產(chǎn)生不好的體驗(yàn) output.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue());// 4. 拍攝會(huì)話var session1: AVCaptureSession = AVCaptureSession();session1.addInput(input);session1.addOutput(output);// 4.1 設(shè)置輸出的格式// 提示:一定要先設(shè)置會(huì)話的輸出為output之后,再指定輸出的元數(shù)據(jù)類型!output.metadataObjectTypes = [AVMetadataObjectTypeQRCode];// 5. 設(shè)置預(yù)覽圖層(用來讓用戶能夠看到掃描情況)var preview: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer.layerWithSession(session1) as AVCaptureVideoPreviewLayer;// 5.1 設(shè)置preview圖層的屬性preview.videoGravity = AVLayerVideoGravityResizeAspectFill;// 5.2 設(shè)置preview圖層的大小preview.frame = self.view.bounds;// 5.3 將圖層添加到視圖的圖層self.view.layer.insertSublayer(preview, atIndex: 0);self.previewLayer = preview;// 6. 啟動(dòng)會(huì)話 session1.startRunning();self.session = session1;}func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {// 會(huì)頻繁的掃描,調(diào)用代理方法// 1. 如果掃描完成,停止會(huì)話self.session?.stopRunning();// 2. 刪除預(yù)覽圖層self.previewLayer?.removeFromSuperlayer();println(metadataObjects);// 3. 設(shè)置界面顯示掃描結(jié)果if (metadataObjects.count > 0) {var obj:AVMetadataMachineReadableCodeObject = metadataObjects[0] as AVMetadataMachineReadableCodeObject;// 提示:如果需要對(duì)url或者名片等信息進(jìn)行掃描,可以在此進(jìn)行擴(kuò)展!println("結(jié)果如下:" + obj.stringValue);}}

?

轉(zhuǎn)載于:https://www.cnblogs.com/ziyeSky/p/4138053.html

總結(jié)

以上是生活随笔為你收集整理的IOS 控件 - Swift 集成 IOS 自带 API 扫描二维码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。