현재 비디오 녹화 및 편집을위한 응용 프로그램을 개발 중입니다. 구멍 응용 프로그램은 가로 모드 만 지원하므로 풍경에 카메라 컨트롤을 사용하고 싶습니다. 그러나 미리보기 화면은 항상 다시 세로로 전환됩니다. 비슷한 질문이 전에 (camera preview is portrait in landscape app) 요청되었지만 슬프게도 어떤 대답도 받아 들여지지 않았습니다.UIImagePickerController - 비디오 미리보기를 가로로 바꿈
내가 시도 몇 가지 접근 방법 :
먼저 내가 수동으로UIImagePickerController
의보기를 추가 - 미리보기가 내가 원하는대로 정확하게했지만, (녹음하는 동안) 잘못 비디오 이미지가 (옆으로 설정).
코드 :
- (BOOL) startCameraController {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO) {
return NO;
}
self.cameraUI = [[UIImagePickerController alloc] init];
self.cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
self.cameraUI.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];
self.cameraUI.allowsEditing = NO;
self.cameraUI.delegate = self.parentViewController;
[self.parentViewController addChildViewController:self.cameraUI];
self.cameraUI.view.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
[self.parentViewController.view addSubview:self.cameraUI.view];
return YES;
}
결과 : 그럼이 UIImagePickerController
보여 presentViewController
을 사용
- 카메라의 녹화가 완벽하게 잘 작동하지만 미리보기 화면이 세로에서 내가 가지고 내 장치가 작동하도록 할 수 있습니다.
코드 :
- (BOOL) startCameraController {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == NO) {
return NO;
}
self.cameraUI = [[UIImagePickerController alloc] init];
self.cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
self.cameraUI.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];
self.cameraUI.allowsEditing = NO;
self.cameraUI.delegate = self.parentViewController;
[self.parentViewController presentViewController:self.cameraUI animated:YES completion:^{}];
return YES;
}
결과 : 카메라 미리보기로 변경하여 수동으로보기를 설정하려고 할 때 나는 심지어 이벤트 _UIImagePickerControllerUserDidCaptureItem
에 listend
가 감지 할 수 -하지만 년후 미리보기의 프레임 크기를 조정할 수 없습니다.
코드 :
- (void) cameraChangedToPreview {
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO];
if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeRight) {
self.cameraUI.view.transform = CGAffineTransformMakeRotation(M_PI_2);
} else if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationLandscapeLeft) {
self.cameraUI.view.transform = CGAffineTransformMakeRotation(-M_PI_2);
}
if (IS_WIDESCREEN) {
self.cameraUI.view.frame = CGRectMake(0, 0, 568, 320);
} else {
self.cameraUI.view.frame = CGRectMake(0, 0, 480, 320);
}
}
결과 :
내 구멍 응용 프로그램을 사용할 수 있도록 내가 어떤 힌트 또는 I 가로 모드에서 카메라와 미리보기를 사용할 수있는 방법을 제안 정말 감사하겠습니다 이 과정에서 장치를 돌리지 않고 (응용 프로그램을 사용하는 동안 장치가 삼각대에 놓이게되어 회전 할 수 없습니다.)
감사합니다. UIImagePickerController를 클래스는 세로 모드를 지원하여 UIImage 선택기보기는 여기에 가로 모드에서 사용할 수 없습니다