iPhone カメラを使用して、ビデオ ストリームの明るさの変化を検出するアプリケーションを作成しています。ビデオ フィードは、ナビゲーション コントローラーの下にある一連のビューの途中にある必要があります。このビューのボタンを押すと、ビデオ ストリームの平均輝度を表示するビューが表示されます。
UIImagePicker を正しい方法で表示するのにかなり苦労しています。ネストされた UIView に出力することはできないことがわかりました。代わりに、追加機能を表示するようにカメラのオーバーレイを設定する必要があります。このオーバーレイをナビゲーション コントローラーの一部にする必要があります。
内部に次のコードがありますLuxMeterController
:
- (void)viewDidLoad
{
[super viewDidLoad];
if (self.tst != YES) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
UIStoryboard* sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
LuxMeterController* vc = [sb instantiateViewControllerWithIdentifier:@"cameraVc"];
vc.tst = YES;
picker.cameraOverlayView = vc.view;
[self presentModalViewController:picker animated:NO];
}
}
まず、ビューが読み込まれます。カメラが初期化され、モーダル ビューとして表示されます。カメラのオーバーレイは の 2 番目のインスタンスに設定されます。LuxViewController
これは、新しいカメラを としてレンダリングしませんtst == YES
。
この種のものは機能しているようです-オーバーレイとして全画面表示のビデオフィードがあります。
私の問題は、オーバーレイがストーリーボードの階層の一部ではないため、ナビゲーション コントローラーからの UI 要素 (タイトルバー、戻るボタンなど) がないことです。
オーバーレイをナビゲーション コントローラー内に配置するにはどうすればよいですか? それとも、これは間違ったアプローチですか?ビデオストリームをナビゲーション コントローラー階層内に配置し、階層のさらに下のビューに移動できるオーバーレイ ボタンを設定するにはどうすればよいですか?
私は Objective-C と iphone の開発をごく短期間しか行っていないため、明らかな何かが欠けている可能性があります。より良いアプローチがあれば、それについて知りたいです。