◾️はじめに
チャットアプリのフレンド登録など、様々な場面でQRコードを利用したい事があります。
・QRコードを読み取り、取得した文字列に応じて処理を行う方法
・QRコードを読み取り、取得したURLへアクセスしてAPIを実行する方法
上記の方法を想定してそれぞれ(文字列、URL)のQRコード生成を記載します。
◾️文字列からQRコードを生成する
「QRコードを読み取り、取得した文字列に応じて処理を行う方法」
を想定して、文字列からQRコードを生成する方法を記載します。
以下がその方法です。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 文字列をNSDataに変換
let str = "変換する文字列"
let data = str.data(using: String.Encoding.utf8)!
// QRコード生成
let qr = CIFilter(name: "CIQRCodeGenerator", withInputParameters: ["inputMessage": data, "inputCorrectionLevel": "M"])!
let sizeTransform = CGAffineTransform(scaleX: 10, y: 10)
let qrImage = qr.outputImage!.transformed(by: sizeTransform)
let context = CIContext()
let cgImage = context.createCGImage(qrImage, from: qrImage.extent)
let uiImage = UIImage(cgImage: cgImage!)
// 作成したQRコードを表示
let qrImageView = UIImageView()
qrImageView.contentMode = .scaleAspectFit
qrImageView.frame = self.view.frame
qrImageView.image = uiImage
self.view.addSubview(qrImageView)
}
}
◾️URLからQRコードを生成する
「QRコードを読み取り、取得したURLへアクセスしてAPIを実行する方法」
を想定して、URLからQRコードを生成する方法を記載します。
以下がその方法です。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// URLをNSDataに変換
let url = "https://www.google.co.jp/"
let data = url.data(using: String.Encoding.utf8)!
// QRコード生成
let qr = CIFilter(name: "CIQRCodeGenerator", withInputParameters: ["inputMessage": data, "inputCorrectionLevel": "M"])!
let sizeTransform = CGAffineTransform(scaleX: 10, y: 10)
let qrImage = qr.outputImage!.transformed(by: sizeTransform)
let context = CIContext()
let cgImage = context.createCGImage(qrImage, from: qrImage.extent)
let uiImage = UIImage(cgImage: cgImage!)
// 作成したQRコードを表示
let qrImageView = UIImageView()
qrImageView.contentMode = .scaleAspectFit
qrImageView.frame = self.view.frame
qrImageView.image = uiImage
self.view.addSubview(qrImageView)
}
}