我正在制作一个使用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的开发,所以我可能会遗漏一些明显的东西。如果有更好的方法,我想了解它。