2011-05-06 22 views
2

我在我的应用程序中使用UIImagePickerControllerSourceTypeCamera,但要添加的摄像头查看子视图。不是模态的观点。使用相机作为子视图

现在,我使用

UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
picker.delegate = self; 
[self presentModalViewController:picker animated:YES]; 

我想用它这样的,但似乎并没有工作..

UIImagePickerController * picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
picker.delegate = self; 
[picker.view setFrame:CGRectMake(300, 40, 300, 200)]; 
[self.view addSubview:picker.view]; 

我知道UIImagePickerControllerSourceTypeCamera只可作为模态视图。 使用此例如如何为例如Hipstamatic?

+0

我假设Hipstamatic使用的是模态UIImagePickerController(不带控件),但是会覆盖它自己的自定义视图。 – 2011-05-06 19:21:31

回答

10

这是iOS中可能4+使用AVCaptureSession framework。这比使用的UIImagePickerController要复杂得多,但你必须在输入和输出的完全控制。将相机视图作为子视图的关键是以下代码。假设你有一个名为previewView子视图要显示摄像机视图:

AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session]; 
previewLayer.frame = self.previewView.bounds; 
[self.previewView.layer addSublayer:previewLayer]; 

还有更多的设置工作要做给你AVCaptureSession对象正确的输入和输出设备和实际拍摄照片。这可以在网上的文档和例子中找到。

0

你是对的,唯一支持的显示UIImagePickerController的方法似乎是presentModalViewController:animated:或UIPopoverController。

我对Hipstamatic并不熟悉,但很有可能会使用AVFoundation,特别是AVCaptureVideoPreviewLayer

+0

“适用于iOS 4.0及更高版本。”我从来没有使用过Hipstamatic,但我认为它比iOS 4.0早。 – 2011-05-06 19:27:40

0

访问link获得的想法的事情是如何来完成。当心AVCam演示在IOS程序developer.apple.com资源。你一定会明白它是如何工作的。你应该是APPLE的注册开发者,这很容易。

希望它有帮助。

相关问题