在另一个UIView中显示UIImagePickerController

时间:2009-11-18 21:25:55

标签: iphone objective-c cocoa-touch uiimagepickercontroller

在过去的几个月里,我一直在使用UIImagePickerController进行相当广泛的工作,特别是在OS3.1中的新功能以及更新的覆盖视图在视图顶部。这工作得很好。

但是,我目前正在开发一个项目,我希望能够在现有视图中显示UIImagePickerController的摄像机视图。基本上,与我目前正在做的完全相反。

一个例子是带有导航组件的视图控制器(想想带有渐变的顶部和底部水平条),点击其中一个条上的按钮,然后内容区域显示摄像机视图。快门动画应该会亮起,顶部和底部导航栏将始终保持在顶部。

我已成功将UIImagePickerController添加到窗口视图中,并以模态方式呈现它,但是没有任何运气将其添加为子视图。

例如:

[window addSubview:camera.view];
[self presentModalViewController:camera animated:YES];

3 个答案:

答案 0 :(得分:7)

您需要做的就是调用viewWillAppear和viewDidAppear。

以下是_pickerController是UIImagePickerController实例的示例:

[self.view addSubview:_pickerController.view];
[_pickerController viewWillAppear:YES];
[_pickerController viewDidAppear:YES];

答案 1 :(得分:2)

在将视图添加到视图后,在图像选择器控制器上调用viewWillAppear:YES。跳过模态视图控制器业务。

答案 2 :(得分:0)

我认为API不能直接访问UIImagePickerController的实际视图。该类实际上是UINavigationController的子类,因此我认为它本身并不具有实际视图,而是管理其子控制器及其视图的调用。

当您以模态方式调用UIImagePickerController时,它不会将其控制的视图作为子视图添加到窗口(或任何其他视图)。这就是模态视图的含义。它将视图呈现给视图层次结构的“侧面”。

即使你可以一起破解这个,我认为Apple会拒绝它,因为它不属于API并且违反了HIG。