2011-03-01 75 views
29

我創建了一個簡單的應用程序,使用UIImagePickerViewController從相機捕捉,但我想定製從相機抓取的界面,例如添加一些按鈕。如何創建自定義攝像頭視圖,而不是UIImagePickerViewController?

UIImagePickerViewController不允許直接這樣做,所以如何創建一個自定義視圖來顯示實時攝像頭並從中捕獲?

+0

的可能重複[iPhone:照相機預覽疊加](http://stackoverflow.com/questions/1001347/iphone -camera-preview-overlay) – rptwsthi 2013-03-11 11:06:32

回答

30

簡單的方法是繼續使用UIImagePickerViewController,但將showsCameraControls設置爲NO並使用cameraOverlayView提供您自己的用戶界面。

更困難(但更靈活)的方法是使用AVFoundation類(特別是AVCaptureVideoPreviewLayerAVCaptureStillImageOutput)來構建自己的相機。

4

您需要將showCameraControls的值設置爲NO,並使用cameraOverlayView提供您自己的自定義疊加視圖。

+1

@HitendraHckr我爲什麼要複製哪個以前的答案?我的回答是這個頁面上最老的:3月1日11時在15:20。我不確定如何從未來的答案中複製。 – 2014-07-03 23:19:20

23

是,創建從代碼的UIImagePickerController,調整它的屬性,添加覆蓋到它,並與您的控制器,任何你想要的是覆蓋控制:自定義控件,覆蓋圖片等

那讓這樣的事情:

self.picker = [[UIImagePickerController alloc] init]; 
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; 
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
self.picker.showsCameraControls = NO; 
self.picker.navigationBarHidden = YES; 
self.picker.toolbarHidden = YES; 
self.picker.wantsFullScreenLayout = YES; 

// Insert the overlay 
self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil]; 
self.overlay.pickerReference = self.picker; 
self.picker.cameraOverlayView = self.overlay.view; 
self.picker.delegate = self.overlay; 

[self presentModalViewController:self.picker animated:NO]; 

OverlayViewController是,你必須寫來控制您添加到覆蓋所有的控制器。

pickerReference是一個屬性,你可以繼續發送訂單到相機。例如,你可以調用從一個UIButton未來的IBAction爲下面放置到覆蓋:

[self.pickerReference takePicture]; 
+5

根據我的經驗,'self.picker.navigationBarHidden = YES;''self.picker.toolbarHidden = YES;''self.picker.wantsFullScreenLayout = YES;'毫無意義。這些不會改變任何東西。所有你需要的是'self.picker.showsCameraControls = NO;' – 2013-11-04 12:39:55

相關問題