この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
今回は、iOSアプリ開発で ZXingObjC ライブラリを使い、文字列から QRコード を生成するサンプルを作ってみたいと思います。
ちなみに、Android版のQRコードの生成方法については、Android Tips #42 ZXing ライブラリ (2.1) を使って QR コードを生成する を参考にしてください。
環境構築
前回と同じ、以下の環境を使用します。
- ZXingObjC 2.1.0
- Xcode 4.6
- iOS SDK 6.1
- iPod touch 5th
プロジェクトの作成、ライブラリの設定方法は、前回と同じなので 前回のブログ( iOSアプリ開発でZXingObjCを使ってQRコードを読み取る ) を参考にしてください。
サンプルの実装
以下の部品を、画面の上から順に配置します。
- UITextField:QRコードにする文字列を入力するテキストフィールド
- UIButton:QRコード生成ボタン
- UIImageView:QRコードイメージ(240 x 240)
配置するとこんな感じになります。
次に、ヘッダーファイルを作成します。
#import <UIKit/UIKit.h>
#import <ZXingObjC/ZXingObjC.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *qrcodeTxt;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
- (IBAction)createQrCodePressed:(id)sender;
@end
- L2:ZXingObjCをインポートします。
- L6:画面の最上部に配置したテキストフィールドと「qrcodeTxt」を接続します。
- L7:画面の上から3番目に配置したQRコードイメージと「imageView」を接続します。
- L9:画面の上から2番目に配置したQRコード生成ボタンと「createQrCodePressed」を接続します。
最後に、実装ファイルを作成します。
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (IBAction)createQrCodePressed:(id)sender {
[self createQrCode:self.qrcodeTxt.text];
// ソフトウェアキーボードを閉じます。
[self.qrcodeTxt resignFirstResponder];
}
- (void)createQrCode:(NSString *)qrcodeTxt
{
if (qrcodeTxt == nil || [qrcodeTxt isEqualToString:@""]) {
self.imageView.image = nil;
return;
}
// QRコードを生成します。
ZXMultiFormatWriter* writer = [[ZXMultiFormatWriter alloc] init];
CGSize imageSize = self.imageView.frame.size;
ZXBitMatrix* result = [writer encode:qrcodeTxt
format:kBarcodeFormatQRCode
width:imageSize.width
height:imageSize.height
error:nil];
if (result == nil) {
self.imageView.image = nil;
return;
}
// QRコードを表示します。
CGImageRef qrImageRef = [ZXImage imageWithMatrix:result].cgimage;
self.imageView.image = [UIImage imageWithCGImage:qrImageRef];
}
@end
- L28:生成したQRコード画像がソフトウェアキーボードに隠れてしまうので、ここでソフトウェアキーボードを閉じます。
- L38 ~ L44:QRコードを生成しています。
- L50 ~ L51:生成したQRコード画像を画面に表示しています。
シンプルですが、これで実装完了です。
動作確認
では、動かしてみます。
起動したらテキストフィールドをタップして、「http://classmethod.jp」と入力します。
そして、「QRコード生成」ボタンをタップします。
入力した文字列のQRコードが生成されました!
ちなみに、環境設定や使い方については、
https://github.com/TheLevelUp/ZXingObjC#readme と、
付属のサンプル( ZXingObjC-2.1.0/examples/QrCodeTest/QrCodeTest.xcodeproj )を参考にするとよいでしょう。
ではでは。