1、搭界面
2、代码
//
// ViewController.swift
// detectorQRCode
//
// Created by targetcloud on 2016/12/3.
// Copyright © 2016年 targetcloud. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var detectorImg: UIImageView!
@IBOutlet weak var resultTV: UITextView!
@IBAction func detect(_ sender: Any) {
let image = detectorImg.image
let imageCI = CIImage(image: image!)
let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])
let features = detector?.features(in: imageCI!)
var resultImage = image
var resultMessage = [String]()
for feature in features! {
let qrFeature = feature as! CIQRCodeFeature
resultMessage.append(qrFeature.messageString!)
resultTV.text.append(qrFeature.messageString!+"\n")
resultImage = drawFrame(resultImage!, feature: qrFeature,lineWidth:5)
detectorImg.image = resultImage
}
let alertVC = UIAlertController(title: "结果", message: resultMessage.description, preferredStyle: UIAlertControllerStyle.alert)
let action = UIAlertAction(title: "关闭", style: UIAlertActionStyle.default) { (action: UIAlertAction) in
self.dismiss(animated: true, completion: nil)
}
alertVC.addAction(action)
present(alertVC, animated: true, completion: nil)
}
func drawFrame(_ image: UIImage, feature: CIQRCodeFeature,lineWidth:CGFloat) -> UIImage {
let size = image.size
UIGraphicsBeginImageContext(size)
image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let context = UIGraphicsGetCurrentContext()
context?.scaleBy(x: 1, y: -1)
context?.translateBy(x: 0, y: -size.height)
let bounds = feature.bounds
let path = UIBezierPath(rect: bounds)
UIColor.red.setStroke()
path.lineWidth = lineWidth
path.stroke()
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage!
}
}
使用工具类检测出二维码见二维码系列(4)