È necessario implementare una consuetudine UIImagePickerController
. Per questo, è necessario impostare la proprietà di imagepicker showsCameraControls
su FALSE.
self.mImagePickerController.showsCameraControls = NO;
self.mImagePickerController.wantsFullScreenLayout = YES;
Una volta fatto, nessun controllo predefinito sarà visibile all'utente. Avrai bisogno di pulsanti di setup personalizzati per start/stop registrazione e macchina fotografica lanciando ecc
Ora, è possibile utilizzare la start/stop metodi per registrare un video:
Quando si clicca su Start Recording,
[self.mImagePickerController startVideoCapture];
Per arrestare,
[self.mImagePickerController stopVideoCapture];
per tenere traccia del passaggio tra la fotocamera, è possibile utilizzare una bandiera
if (self.mImagePickerController.cameraDevice == UIImagePickerControllerCameraDeviceRear)
{
self.mImagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront;
isFrontCamera = YES;
}
else
{
self.mImagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear;
isFrontCamera = NO;
}
È possibile impostare i controlli come desiderato sul cambio di orientamento. AppDelegate.m
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
Questo è il delegato che riceve il cambio di orientamento. È possibile utilizzare l'oggetto della particolare classe per chiamare il metodo shouldAutorotate e impostare le posizioni di controllo della telecamera in base all'orientamento.
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
[self.objController shouldAutorotate];
return UIInterfaceOrientationMaskAll;
}
Ora all'interno cameraviewcontroller.m
-(BOOL)shouldAutorotate
{
UIInterfaceOrientation interfaceOrientation = [[UIDevice currentDevice]orientation];
if(interfaceOrientation == UIInterfaceOrientationPortrait)
{
// your controls setup
}
else
{
// view accordingly for landscape
}
}
ho cercato di coprire tutti i punti. Fammi sapere se hai qualche confusione. Spero che lo aiuti :)
1) È necessario verificare la condizione all'evento click del pulsante della fotocamera a scatto.
2) AppDelegate.h: dichiara un oggetto della classe in cui si registra il video e si crea una proprietà. Qui sto usando CameraViewController
come esempio.
CameraViewController *objController;
Ora in AppDelegate.m:
self.objController = [[CameraViewController alloc]initWithNibName:@"CameraViewController" bundle:nil];
Ora utilizzare questo esempio per chiamare il metodo shouldAutorotate
come ho mostrato sopra. E ritorno orientamento orizzontale:
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if(isOptionScreenActive == YES)
{
[self.shareController shouldAutorotate];
return UIInterfaceOrientationMaskLandscape;
}
else
{
[self.anotherController shouldAutorotate];
return UIInterfaceOrientationMaskPortrait;
}
}
Qui isOptionScreenActive
è un flag
che è impostato nel viewWillAppear
della classe di registrazione. Impostalo false
in viewDidUnload
. Oppure può essere viewWillAppear
di un'altra classe.
3) Ho usato cameraviewcontroller.m solo come esempio. Riflette la tua classe di registrazione. Anche nel metodo shouldAutorotate
della classe di registrazione video, se l'orientamento rilevato è verticale, restituire NO. In questo modo l'interfaccia utente non cambierà e potrai mantenere l'interfaccia utente solo in orizzontale.
Si prega di non chiudere questa domanda. la domanda a cui hai fornito un link non ha la risposta giusta e tutte le soluzioni da quei commenti non funzionano. –
@iPatel hai letto la mia domanda? Ho già parlato di questo link. –
hai provato a impostare l'orientamento del video? http://stackoverflow.com/questions/14811641/ios-camera-orientation#14812010 – Gotschi