내 경우처럼 UIImagePickerController 위에 오버레이를 표시하려는 경우 오버레이의 일부 UI 구성 요소 (예 : 상단 막대 및 하단 막대) 사이에 컨트롤러의 "라이브 카메라 피드"(보기)를 맞추려면 다음 코드를 사용하십시오. 이것은 UIImagePickerController의 뷰를 메인 애플리케이션 윈도우의 서브 뷰가 아닌 현재 컨트롤러의 서브 뷰로 표시하는 것이 주된 차이점 인 위의 SomaMan의 답변 (감사원)에 기반합니다.() viewDidLoad에이 코드를 넣어 :
// Overlay view with custom camera controls and a top bar and a bottom bar
self.overlay = [[CameraOverlayView alloc] initWithFrame:self.view.bounds];
[self setOverlayViewModel];
self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;
self.imagePicker.showsCameraControls = NO;
self.imagePicker.navigationBarHidden = YES;
self.imagePicker.toolbarHidden = YES;
self.imagePicker.delegate = self;
UIView *imagePickerView = self.imagePicker.view;
if ([[UIScreen mainScreen] bounds].size.height == 568.0f) {
// iPhone 5, 16:9 ratio, need to "zoom in" in order to fill the screen since there is extra space between top and bottom bars on a taller screen
self.imagePicker.cameraViewTransform = CGAffineTransformScale(self.imagePicker.cameraViewTransform, 1.5, 1.5); // change 1.5 to suit your needs
}
CGRect cameraViewFrame = CGRectMake(0, self.overlay.topBarHeight,
self.view.bounds.size.width,
self.view.bounds.size.height - self.overlay.topBarHeight - self.overlay.bottomBarHeight);
imagePickerView.frame = cameraViewFrame;
// keep this order so that the overlay view is on top of the "live camera feed" view
[self.view addSubview:imagePickerView];
[self.view addSubview:self.overlay];
TIP : cameraViewTransform를 수행 할 때, 당신은 사용자가 동일한 이미지와 끝까지하려는 경우 선택 도구가 당신을 위해 캡처하는 동일한 결과 사진을 변환을 적용해야합니다 그들은 당신의 변형 된 피커의 견해를 통해 볼 수 있습니다 : P
UUR 질문을 해결 했나요? –