1

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 の開発をごく短期間しか行っていないため、明らかな何かが欠けている可能性があります。より良いアプローチがあれば、それについて知りたいです。

4

0 に答える 0