SWIFT Scan QRCode

來源:互聯網
上載者:User

標籤:

SWIFT中掃描QRCode代碼如下,照著敲一次再看下API的注釋應該就沒問題了。

import UIKitimport Foundationimport AVFoundationclass 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 Scan QRCode

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.