SWIFT中扫描QRCode代码如下,照着敲一次再看下API的注释应该就没问题了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | import UIKit import Foundation import AVFoundation class ViewController: UIViewController,AVCaptureMetadataOutputObjectsDelegate,UIAlertViewDelegate { let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) let session = AVCaptureSession() var layer:AVCaptureVideoPreviewLayer? override func viewDidLoad() { super .viewDidLoad() self .view.backgroundColor = UIColor.grayColor() let lblIntroduction = UILabel(frame: CGRectMake(10, 80, 300, 50)) lblIntroduction.text = "Scan QRCode" lblIntroduction.textColor = UIColor.whiteColor() self .view.addSubview(lblIntroduction) //let imageView = UIImageView(frame: CGRectMake(10, 140, 300, 300)) //imageView.image = UIImage(named: "pick_bg") //self.view.addSubview(imageView) <br> //add scan line effect<br> let line = UIView(frame: CGRectMake(20, 150, 280, 1))<br> line.backgroundColor = UIColor.yellowColor()<br> self.view.addSubview(line)<br> <br> UIView.animateWithDuration(2.5, delay: 0, options: UIViewAnimationOptions.Repeat, animations: { () -> Void in<br> line.frame = CGRectMake(20, 430, 280, 1)<br> }, completion: nil)<br><br> setupCamera() } func setupCamera() { //An AVCaptureSession preset suitable for medium quality output self .session.sessionPreset = AVCaptureSessionPresetMedium //AVCaptureSessionPresetHigh var error: NSError ? //This step is to ask device where it can use back camera let input = AVCaptureDeviceInput(device: device, error: &error) if error != nil { println(error?.description) return } if session.canAddInput(input) { session.addInput(input) } layer = AVCaptureVideoPreviewLayer(session: session) layer?.videoGravity = AVLayerVideoGravityResizeAspectFill layer?.frame = CGRectMake(20, 150, 280, 280) self .view.layer.insertSublayer( self .layer!, atIndex: 0) let output = AVCaptureMetadataOutput() output.setMetadataObjectsDelegate( self , queue: dispatch_get_main_queue()) if session.canAddOutput(output) { session.addOutput(output) output.metadataObjectTypes = [AVMetadataObjectTypeQRCode] } session.startRunning() } func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) { var stringValue:String? if metadataObjects.count > 0 { var metadataObject = metadataObjects[0] as! AVMetadataMachineReadableCodeObject stringValue = metadataObject.stringValue } self .session.stopRunning() let alertView = UIAlertView() alertView.message = stringValue alertView.addButtonWithTitle( "Sure" ) alertView.delegate = self alertView.cancelButtonIndex = 0 alertView.show() } func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) { session.startRunning() } override func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
refer to :https://github.com/hitourlee/Swift_QRCode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端