2011-03-01 4 views
29

카메라에서 캡처하기 위해 UIImagePickerViewController를 사용하여 간단한 응용 프로그램을 만들었지 만 일부 단추 추가와 같이 카메라에서 잡기위한 인터페이스를 사용자 정의하고 싶습니다.UIImagePickerViewController 대신 사용자 정의 카메라 뷰를 어떻게 만듭니 까?

UIImagePickerViewController는 이것을 직접 허용하지 않으므로 라이브 카메라 피드를 표시하고 캡쳐 할 수있는 사용자 정의보기를 만드는 방법은 무엇입니까?

+0

의 중복 가능성 [아이폰 : 카메라 미리보기 오버레이 (http://stackoverflow.com/questions/1001347/iphone 예를 들어, 오버레이에 배치있는 UIButton에서 오는 IBAction를에서 다음을 호출 할 수 있습니다 -camera-preview-overlay) – rptwsthi

답변

30

쉬운 방법은 UIImagePickerViewController을 계속 사용하고 showsCameraControls을 아니오로 설정하고 cameraOverlayView을 사용하여 사용자 인터페이스를 제공하는 것입니다.

AVFoundation 클래스 (특히 AVCaptureVideoPreviewLayerAVCaptureStillImageOutput)를 사용하여 자신 만의 카메라를 구성하는 것이 더 어렵지만 더 유연합니다.

4

showCameraControls의 값을 NO로 설정하고 cameraOverlayView를 사용하여 사용자 정의 오버레이보기를 제공해야합니다.

+1

@HitendraHckr 왜 이전 답변에서 복사 했습니까? 내 대답은이 페이지에서 가장 오래된 것입니다 : 3 월 1 일 11시 15 분 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은 카메라로 주문을 보낼 수있는 속성입니다.

[self.pickerReference takePicture]; 
+5

제 경험상,'self.picker.navigationBarHidden = YES;''self.picker.toolbarHidden = YES;''self.picker.wantsFullScreenLayout = YES;'는 의미가 없습니다. 이것들은 아무 것도 바뀌지 않습니다. 필요한 것은'self.picker.showsCameraControls = NO;'입니다. –

관련 문제