如果您只想扫描条形码而不深入了解 AVFoundation,这是一个好工具。
WJBarCodeScanner 尽可能简化扫描过程,并尽可能提供灵活性。
1. 创建 WJScanViewController 的子类。
2. 配置透明区域、扫描颜色、metadataObjectTypes。
3. 重写 func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!)
以获取扫描结果。
4. 重写 func handleCameraWithoutAuth()
以处理没有摄像头的情况。
5. 使用属性(session
output
)进行更具体的操作。
import UIKit
import AVFoundation
class ViewController: WJScanViewController{
@IBOutlet weak var messageLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
transparentArea = CGRect(x: view.center.x-150, y: 0, width: 300, height: 400)
scanColor = UIColor.cyanColor()
metadataObjectTypes = [ AVMetadataObjectTypeQRCode] // IF YOU only want to scan QRCode
}
override func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {
if let metadataObject = metadataObjects.first {
let stringValue = (metadataObject as! AVMetadataMachineReadableCodeObject).stringValue
print(stringValue)
messageLabel.text = stringValue
session.stopRunning()
}
}
override func handleCameraWithoutAuth() {
let alertView = UIAlertController(title: "alert", message: "Cannot use Back Camera", preferredStyle: .Alert)
alertView.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil ))
presentViewController(alertView, animated: true , completion: nil)
}
}
步骤1:将 WJBarCodeScanner 文件夹拖到您的项目中。
步骤2:创建 WJScanViewController 的子类。
import UIKit
import AVFoundation
class ViewController: WJScanViewController{
}