iOS アプリで QR コードとバーコードを生成する方法 (Swift)

ここでは、Swift で iOS アプリで、QR コードとバーコードを生成して表示する方法をご説明します。

iOS アプリで QR コードとバーコードを生成する方法 1

QR コードとバーコードを表示する iOS アプリの準備をする

まずはテスト用にQR コードとバーコードを表示するための、簡単な iOS アプリを作ります。

Xcode で [iOS] の [App] の新規プロジェクトを作成します。

デザインや場所などは適当で良いので、Main ストーリーボードの View Controller に Image View をひとつ追加します。

iOS アプリで QR コードとバーコードを生成する方法 2


その Image View から、codeImageView という名前でアウトレットを作っておきます。

iOS アプリで QR コードとバーコードを生成する方法 3

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)
        }
    }
}

iOS アプリで QR コードとバーコードを生成する方法 4


4 行目で codeValue として定義した文字列を QR コードとして表示します。

6 行目では codeData に、codeValue を ascii のエンコーディングで Data 型に変換したオブジェクトを生成して代入しています。


7 行目で、画像処理・生成するためのクラス CIFilter を生成しています。

CIFilter のイニシャライザにフィルターの種類を指定します。

今回は QRコードを生成するので CIQRCodeGenerator を指定しています。


CIFilter には Key Value ペアで必要な引数を指定します。

CIQRCodeGenerator では、QR コードにエンコードされるデータは inputMessage というキーで指定します。

iOS アプリで QR コードとバーコードを生成する方法 5

8 行目で先ほど生成した codeData を値として、inputMessage のキーで ciFilter にセットしています。


9 行目で、CIFilter の outputImage プロパティから、処理後の CIImage オブジェクトを取得しています。

10 行目で、codeImageView の image に生成された QR コードの画像を代入して表示しています。


これで、Swift で QR コードを生成して表示するコードが書けました。


このアプリをシミュレーターにインストールして実行すると、次のように QR コードが表示されます。

iOS アプリで QR コードとバーコードを生成する方法 6

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)
        }
    }
}

これをシミュレーターにインストールして実行すると、次のようにバーコードが生成され表示されます。

iOS アプリで QR コードとバーコードを生成する方法 7


以上、Swift で iOS アプリで、QR コードとバーコードを生成して表示する方法をご説明しました。

© 2024 iOS 開発入門