您需要实现一个自定义UIImagePickerController
. 为此,您需要将 imagepicker 的属性设置showsCameraControls
为 FALSE。
self.mImagePickerController.showsCameraControls = NO;
self.mImagePickerController.wantsFullScreenLayout = YES;
执行此操作后,您将看不到任何默认控件。您需要为开始/停止录制和翻转相机等设置自定义按钮。
现在,您可以使用 start/stop 方法来录制视频:
当点击开始录制时,
[self.mImagePickerController startVideoCapture];
停止,
[self.mImagePickerController stopVideoCapture];
要跟踪相机之间的切换,可以使用标志
if (self.mImagePickerController.cameraDevice == UIImagePickerControllerCameraDeviceRear)
{
self.mImagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
isFrontCamera = YES;
}
else
{
self.mImagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
isFrontCamera = NO;
}
您可以根据需要在方向更改上设置控件。AppDelegate.m
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
这是在方向更改时被调用的委托。您可以使用特定类的对象调用其 shouldAutorotate 方法并根据方向设置相机控制位置。
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
[self.objController shouldAutorotate];
return UIInterfaceOrientationMaskAll;
}
现在在 cameraviewcontroller.m
-(BOOL)shouldAutorotate
{
UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice]orientation];
if(interfaceOrientation == UIInterfaceOrientationPortrait)
{
// your controls setup
}
else
{
// view accordingly for landscape
}
}
我试图涵盖所有要点。如果您有任何困惑,请告诉我。希望能帮助到你 :)
1)您需要检查翻转相机按钮的点击事件的条件。
2) AppDelegate.h:声明一个类的对象,您可以在其中录制视频并创建一个属性。这里我用CameraViewController
一个例子。
CameraViewController *objController;
现在在 AppDelegate.m 中:
self.objController = [[CameraViewController alloc]initWithNibName:@"CameraViewController" bundle:nil];
现在使用这个实例来调用shouldAutorotate
我上面显示的方法。并返回横向:
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if(isOptionScreenActive == YES)
{
[self.shareController shouldAutorotate];
return UIInterfaceOrientationMaskLandscape;
}
else
{
[self.anotherController shouldAutorotate];
return UIInterfaceOrientationMaskPortrait;
}
}
这isOptionScreenActive
是在录制类flag
中设置的。viewWillAppear
将其设置false
在viewDidUnload
. 或者可能viewWillAppear
属于另一类。
3) 我以cameraviewcontroller.m 为例。它反映了您的录音等级。同样在您的视频录制类的shouldAutorotate
方法中,如果检测到的方向是纵向,则返回 NO。这样 UI 不会改变,您只能将 UI 保持为横向。