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