我目前正在開發一個應用程序來記錄和編輯視頻。洞應用程序只支持橫向模式 - 所以我想使用橫向相機控件。但預覽屏幕總是切換回肖像。有一個類似的問題之前被問到(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;
}
結果:
然後我用presentViewController
展現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 presentViewController:self.cameraUI animated:YES completion:^{}];
return YES;
}
結果:
我甚至listend到事件_UIImagePickerControllerUserDidCaptureItem
到當相機改變爲預覽並試圖手動轉動視圖檢測 - 但是我沒無法調整預覽視圖的框架尺寸。
代碼:
- (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);
}
}
結果:
我將是任何提示或建議,我怎麼能在橫向模式下使用相機和預覽非常感激,這樣我可以用我的洞應用而不需要在此過程中轉動設備(該設備在使用應用程序時將處於三腳架中,因此無法轉動。)
謝謝並祝願您!