你需要实现一个自定义的
UIImagePickerController
。为此,你需要将图片选择器的
showsCameraControls
属性设置为FALSE。
self.mImagePickerController.showsCameraControls = NO
self.mImagePickerController.wantsFullScreenLayout = YES
一旦您这样做,将不会显示任何默认控件。您需要设置自定义按钮来开始/停止录制和翻转相机等。
现在,您可以使用开始/停止方法录制视频:
当单击“开始录制”时,
[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)
{
}
else
{
}
}
我尝试覆盖所有要点。如果有任何疑问,请告诉我。希望能帮到你 :)
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
是一个标志,在录制类的viewWillAppear
中设置。在viewDidUnload
中将其设置为false
。或者可能在另一个类的viewWillAppear
中设置。
3) 我只是以cameraviewcontroller.m作为示例,它反映了您的录制类。在视频录制类的shouldAutorotate
方法中,如果检测到的方向为纵向,则返回NO。这样UI界面就不会改变,而您可以保持横屏模式。