我創建了一個簡單的應用程序,使用UIImagePickerViewController從相機捕捉,但我想定製從相機抓取的界面,例如添加一些按鈕。如何創建自定義攝像頭視圖,而不是UIImagePickerViewController?
UIImagePickerViewController不允許直接這樣做,所以如何創建一個自定義視圖來顯示實時攝像頭並從中捕獲?
我創建了一個簡單的應用程序,使用UIImagePickerViewController從相機捕捉,但我想定製從相機抓取的界面,例如添加一些按鈕。如何創建自定義攝像頭視圖,而不是UIImagePickerViewController?
UIImagePickerViewController不允許直接這樣做,所以如何創建一個自定義視圖來顯示實時攝像頭並從中捕獲?
簡單的方法是繼續使用UIImagePickerViewController
,但將showsCameraControls
設置爲NO並使用cameraOverlayView
提供您自己的用戶界面。
更困難(但更靈活)的方法是使用AVFoundation類(特別是AVCaptureVideoPreviewLayer
和AVCaptureStillImageOutput
)來構建自己的相機。
您需要將showCameraControls的值設置爲NO,並使用cameraOverlayView提供您自己的自定義疊加視圖。
@HitendraHckr我爲什麼要複製哪個以前的答案?我的回答是這個頁面上最老的:3月1日11時在15:20。我不確定如何從未來的答案中複製。 – 2014-07-03 23:19:20
是,創建從代碼的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];
根據我的經驗,'self.picker.navigationBarHidden = YES;''self.picker.toolbarHidden = YES;''self.picker.wantsFullScreenLayout = YES;'毫無意義。這些不會改變任何東西。所有你需要的是'self.picker.showsCameraControls = NO;' – 2013-11-04 12:39:55
的可能重複[iPhone:照相機預覽疊加](http://stackoverflow.com/questions/1001347/iphone -camera-preview-overlay) – rptwsthi 2013-03-11 11:06:32