/ / iPad Camera ha un posizionamento dello schermo errato quando lo apri - iOS, iPad, Uiimagepickercontroller

La fotocamera dell'iPad ha una posizione dello schermo errata quando la apri: ios, ipad, uiimagepickercontroller

Sto sviluppando un'app per iPad per scattare una foto o scegliere dalla libreria. Funziona bene, l'unico problema è il layout della fotocamera in modo errato quando si seguono i passaggi seguenti.

  1. Elemento dell'elenco
  2. Toccare il pulsante btnPhotoLibrary
  3. Annulla il popover
  4. Tocca il pulsante Fotocamera

Il layout risultante è molto simile all'immagine in La fotocamera ha un posizionamento errato dello schermo quando si apre a schermo intero modale da popover.

È posizionato leggermente più in basso rispetto ai limiti dello schermo. Questo significa che i controlli in basso si trovano 20 pixel a sud dello schermo e lì è una banda nera 20px nella parte superiore dello schermo

Non hai problemi se non tocchi btnPhotoLibrary ma solo btnCamera.

Stiamo usando la stessa istanza di UIImagePickerController sia per la fotocamera che per il fotolibrary, quindi probabilmente abbiamo bisogno di ripristinare alcune proprietà prima di usarlo come fotocamera, ma non siamo riusciti a trovare un modo.

--

- (void)viewDidLoad {
[super viewDidLoad];
_imagePicker = [[UIImagePickerController alloc]init];
_imagePicker.allowsEditing = FALSE;
_imagePicker.delegate = self;
}

-(IBAction)btnCamera:(id)sender{
if ([popover isPopoverVisible]) {
[popover dismissPopoverAnimated:YES];
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
_imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:_imagePicker animated:YES completion:nil];
}
}

-(IBAction)btnPhotoLibrary:(id)sender{
_imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
if ([popover isPopoverVisible]) {
[popover dismissPopoverAnimated:YES];
}
popover = [[UIPopoverController alloc] initWithContentViewController:_imagePicker];
[popover presentPopoverFromRect:btnCameraRoll.bounds inView:btnPhotoLibrary permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
}

Il sistema operativo di destinazione è iOS6.1, vista orizzontale. Grazie in anticipo.

risposte:

0 per risposta № 1

Sembra che il ripristino view proprietà di UIImagePickerController a nil fa il trucco, ma immagino sia quasi identico alla creazione di una nuova istanza di UIImagePickerController ogni volta che ne hai bisogno.

-(IBAction)btnCamera:(id)sender{
if ([popover isPopoverVisible]) {
[popover dismissPopoverAnimated:YES];
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
_imagePicker.view = nil;
_imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:_imagePicker animated:YES completion:nil];
}
}