在导航控制器中安装UIImagePicker?

时间:2012-05-14 12:00:05

标签: iphone objective-c

我正在制作一个使用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];
    }
}

首先,视图已加载 - 它初始化相机并将其显示为模态视图。相机的叠加设置为LuxViewController的第二个实例 - 此实例不会将新相机渲染为tst == YES

这种方式似乎有用 - 我有一个全屏视图的视频输入作为叠加层。

我的问题是,由于叠加层不是故事板中层次结构的一部分,因此它没有来自导航控制器的UI元素(标题栏,后退按钮等)。

如何让叠加层位于导航控制器内?或者这是错误的做法?如何让视频流进入导航控制器层次结构,并使覆盖按钮可以移动到层次结构中的更远的视图?

我只是在很短的时间内做了Objective-c和iphone的开发,所以我可能会遗漏一些明显的东西。如果有更好的方法,我想了解它。

0 个答案:

没有答案