2011-05-06 57 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的註冊開發者,這很容易。

希望它有幫助。

相關問題