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