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.
- Elemento dell'elenco
- Toccare il pulsante btnPhotoLibrary
- Annulla il popover
- 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 № 1Sembra 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];
}
}