使用ライブラリ
Podfile
target 'your_project' do
pod 'QRCodeReader.swift', '~> 7.3.0'
end
プログラム
import QRCodeReader
class HogeViewController: UIViewController,QRCodeReaderViewControllerDelegate {
lazy var reader = QRCodeReaderViewController(builder: QRCodeReaderViewControllerBuilder {
$0.reader = QRCodeReader(metadataObjectTypes: [AVMetadataObjectTypeQRCode])
$0.showTorchButton = true
})
@IBAction func scanAction(_ sender: AnyObject) {
do {
if try QRCodeReader.supportsMetadataObjectTypes() {
reader.modalPresentationStyle = .formSheet
reader.delegate = self
reader.completionBlock = { (result: QRCodeReaderResult?) in
if let result = result {
print("Completion with result: \(result.value) of type \(result.metadataType)")
}
}
present(reader, animated: true, completion: nil)
}
} catch let error as NSError {
//エラー処理
}
}
func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) {
reader.stopScanning()
dismiss(animated: true) { [weak self] in
//読み取った後の処理
//result.valueで取得
}
}
func reader(_ reader: QRCodeReaderViewController, didSwitchCamera newCaptureDevice: AVCaptureDeviceInput) {
if let cameraName = newCaptureDevice.device.localizedName {
print("Switching capturing to: \(cameraName)")
}
}
func readerDidCancel(_ reader: QRCodeReaderViewController) {
reader.stopScanning()
dismiss(animated: true, completion: nil)
}
}