iOS アプリで QR コードとバーコードを生成する方法 (Swift)
ここでは、Swift で iOS アプリで、QR コードとバーコードを生成して表示する方法をご説明します。
QR コードとバーコードを表示する iOS アプリの準備をする
まずはテスト用にQR コードとバーコードを表示するための、簡単な iOS アプリを作ります。
Xcode で [iOS] の [App] の新規プロジェクトを作成します。
デザインや場所などは適当で良いので、Main ストーリーボードの View Controller に Image View をひとつ追加します。
その Image View から、codeImageView という名前でアウトレットを作っておきます。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var codeImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
}
ボタンの追加の方法や、アクションの作り方がわからない方は「基本的な iOS アプリの作り方」をご覧ください。
Swift で QR コードを生成して表示する方法
それでは、Swift で QR コードを生成して表示するコードを書いていきましょう。
先ほど、作った ViewController.swift の viewDidLoad() を次のコードを追加します。
override func viewDidLoad() {
super.viewDidLoad()
let codeValue = "1234567890"
let codeData = codeValue.data(using: .ascii)
if let ciFilter = CIFilter(name: "CIQRCodeGenerator") {
ciFilter.setValue(codeData, forKey: "inputMessage")
if let codeImage = ciFilter.outputImage {
codeImageView.image = UIImage(ciImage: codeImage)
}
}
}
4 行目で codeValue として定義した文字列を QR コードとして表示します。
6 行目では codeData に、codeValue を ascii のエンコーディングで Data 型に変換したオブジェクトを生成して代入しています。
7 行目で、画像処理・生成するためのクラス CIFilter を生成しています。
CIFilter のイニシャライザにフィルターの種類を指定します。
今回は QRコードを生成するので CIQRCodeGenerator を指定しています。
CIFilter には Key Value ペアで必要な引数を指定します。
CIQRCodeGenerator では、QR コードにエンコードされるデータは inputMessage というキーで指定します。
8 行目で先ほど生成した codeData を値として、inputMessage のキーで ciFilter にセットしています。
9 行目で、CIFilter の outputImage プロパティから、処理後の CIImage オブジェクトを取得しています。
10 行目で、codeImageView の image に生成された QR コードの画像を代入して表示しています。
これで、Swift で QR コードを生成して表示するコードが書けました。
このアプリをシミュレーターにインストールして実行すると、次のように QR コードが表示されます。
iPhone のカメラアプリなどで、この画像を見ると、1234567890 という値が表示されると思います。
Swift でバーコードを生成して表示する方法
Swift でバーコードを生成して表示する方法は QR コードを生成するのとほぼ同じです。
CIFilter のオブジェクトを生成する際に、CIQRCodeGenerator の代わりに CICode128BarcodeGenerator を指定します。
CICode128BarcodeGenerator は CODE128 のバーコードを生成するためのフィルタです。
CICode128BarcodeGenerator も処理対象となる画像を inputMessage というキーで指定することになっているので、先ほどのコードからフィルター名を置き換えるだけで、バーコードを生成するコードに変更することができます。
override func viewDidLoad() {
super.viewDidLoad()
let codeValue = "1234567890"
let codeData = codeValue.data(using: .ascii)
if let ciFilter = CIFilter(name: "CICode128BarcodeGenerator") {
ciFilter.setValue(codeData, forKey: "inputMessage")
if let codeImage = ciFilter.outputImage {
codeImageView.image = UIImage(ciImage: codeImage)
}
}
}
これをシミュレーターにインストールして実行すると、次のようにバーコードが生成され表示されます。
以上、Swift で iOS アプリで、QR コードとバーコードを生成して表示する方法をご説明しました。