SWIFT Scan QRCode

简介: SWIFT中扫描QRCode代码如下,照着敲一次再看下API的注释应该就没问题了。 import UIKit import Foundation import AVFoundation class ViewController: UIViewController,AVCaptureM...

SWIFT中扫描QRCode代码如下,照着敲一次再看下API的注释应该就没问题了。

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)
        
//add scan line effect
        let line = UIView(frame: CGRectMake(20, 150, 280, 1))
        line.backgroundColor = UIColor.yellowColor()
        self.view.addSubview(line)
        
        UIView.animateWithDuration(2.5, delay: 0, options: UIViewAnimationOptions.Repeat, animations: { () -> Void in
              line.frame = CGRectMake(20, 430, 280, 1)
            }, completion: nil)

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

目录
相关文章
|
测试技术 Swift 索引
Swift:Array+Extension
Swift:Array+Extension
204 0
|
Android开发
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(三)
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(三)
125 0
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(三)
|
存储 缓存 Java
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(二)
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(二)
239 0
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(二)
|
测试技术 Swift
Swift:FileManager+Extension
Swift:FileManager+Extension
581 0
|
测试技术 Swift
Swift:UIImage+Extension
Swift:UIImage+Extension
711 0
|
测试技术 Swift
Swift:UIButton+Extension
Swift:UIButton+Extension
196 0
|
存储 缓存 编解码
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(一)
【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )(一)
156 0
|
移动开发 JavaScript 前端开发
react-native-easy-app 详解与使用之(三) View,Text,Image,Flatlist
react-native-easy-app 是一款为React Native App快速开发提供基础服务的纯JS库,特别是在从0到1的项目搭建初期,至少可以为开发者减少很多不必要的工作量
980 0
react-native-easy-app 详解与使用之(三) View,Text,Image,Flatlist
|
缓存 API 数据库
Reading:一款不错的Material Desgin风格的Kotlin版本的开源APP
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/81946831 Reading https://github.com/Hankkin/Reading 简介 很久不见,重新拾起博客吧,今天分享一个开源APP-Reading,项目的初衷是因为自己平时翻文章,但是公众号又经常忘记看,自己索性搞一个APP吧,顺便练一下Kotlin。
1390 0