iPhoneのカメラ画像の上にUIパーツを置く
お題の通り、iPhoneのカメラ画像の上にラベルをオーバーレイしたときのメモです。
Viewをひとつ追加してカメラ画像を表示させる部分を書く。最後に.cameraOverlayViewを追加するだけ。
具体的な手順は以下のようになります。
IBを使用すること前提で書いています。
1.サブクラスを追加する
なんちゃらViewController.hとm(ここではARTestViewControllerとします)が入っているフォルダを右クリックして「New File」を選ぶ→Objective-C classを選んでサブクラスをUIViewにして名前をつけて追加する
ここでは名前をARUeViewにしました。
2.ARTestViewController.xibをクリック、Viewを追加する(Show the Object libraryをクリック、Objects→Viewを元からあるViewにドラックする)
3.新しく追加したViewを選択し、Show the Identity inspectorをクリック、Custom ClassのClassをARUeViewにする。このとき新しいViewの背景をClear color(透明)にしておくことを忘れずに
4.ARTestViewController.hに以下を追加する
@class ARueView; @interface ARTestViewController : UIViewController { IBOutlet ARueView *arueView; } @end
5.ARTestViewController.xibをクリック、以下のことを行います。
・元々あるViewにボタンを追加、ARue View上にラベルを追加する
・File's Ownerを右クリック、controlを押しながらarueViewとARue Viewを接続する
6.ここからカメラ画像を表示させる準備をします。
ARTestViewController.hに以下を付け足します。
-(IBAction)CameraOn:(id)sender;
7.ARTestViewController.xibを選択してFile's Ownerを右クリック、CameraOnとボタンを接続する
8.ARTestViewController.hに以下を追加する
@interface ARTestViewController : UIViewController <UIImagePickerControllerDelegate> { IBOutlet ARueView *arueView; UIImagePickerController *imagePicker; }
9.ARTestViewController.mに以下を追加する
#import "ARTestViewController.h" #import "ARueView.h" .... - (void)viewDidLoad { [super viewDidLoad]; imagePicker = [[UIImagePickerController alloc] init]; //UIパーツを置くView「ARueView」を非表示にしておく。表示したい場合は消す [arueView removeFromSuperview]; } //カメラ画像表示+オーバーレイ -(IBAction)CameraOn:(id)sender { if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.showsCameraControls = NO; //オーバーレイ imagePicker.cameraOverlayView = arueView; [self presentModalViewController:imagePicker animated:NO]; } } ... - (void)dealloc { [imagePicker release]; [super dealloc]; } @end
こんな感じ。
ソースファイルはこちらです。