カスタムを実装する必要がありますUIImagePickerController
。そのためには、imagepicker のプロパティ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)
{
// 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 を横向きにのみ維持できます。