tl; dr: Layout dell'interfaccia utente interrotto quando si ruota l'iPad mentre si scatta una foto, se l'app visualizza una barra di stato.Problemi di layout e barra di stato con UIImagePickerController dopo la rotazione
Ho un'app che mostra una barra di stato che dovrebbe scattare foto attraverso un UIImagePickerController
.
Io corro questo su un iPad 3, iOS 6 con Xcode 4,51
Il primo problema che ho notato è che se io non nascondo il tramite di stato
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
prima della chiamata a
[self presentViewController:imagePicker animated:YES completion:nil];
Quindi lo UIImagePickerController
non verrà visualizzato correttamente sullo schermo. Lo spazio per la barra di stato sarebbe ancora riservato (ma non sono mostrati tempo o informazioni sulla batteria, ecc.) Con il risultato che i controlli all'estremità inferiore dello schermo sarebbero parzialmente fuori schermo.
Così, ho aggiunto la linea
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
prima di presentare la UIImagePickerController
e il primo problema è stato risolto.
Ora arriva il secondo problema (causato dalla soluzione al primo problema). Quando apro lo UIImagePickerController
, ruoto l'iPad e lo chiudo (tramite "cancella" o "usa", non importa), il gestore (viene chiamato imagePickerControllerDidCancel
o imagePickerController:didFinishPickingMediaWithInfo:
, in cui mostro nuovamente la barra di stato, tramite
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
il problema ora è che la barra di stato viene visualizzato in effetti, ma il resto della app sembra non essere a conoscenza che è sullo schermo di nuovo. (L'UIToolbar che ho sul mio "MainViewController" è in parte nascosto dietro la barra di stato.) La cosa interessante è che, se ruoto l'iPad su qualsiasi altro orientamento, tutto viene visualizzato di nuovo correttamente dopo l'animazione.
Qualcuno può darmi qualche consiglio su come risolvere è un problema? (Attualmente il mio miglior lavoro sarebbe quello di lasciare la barra di stato nascosta dopo che la prima volta qualcuno ha scattato una foto, ma è una specie di sub-ottimale). Forse c'è una soluzione migliore al primo problema, o forse un metodo per risolvere entrambi i problemi.
Ulteriori informazioni: Dopo aver ruotato l'iPad in orizzontale mentre era attivo UIImagePickerController
, questo è il frame del frame di visualizzazione del mio MainViewController: {{0, 0}, {1024, 768}} (cioè nel caso in cui vi sia il problema). Quando ho l'iPad in orientamento orizzontale tutto il tempo, questo è il frame di visualizzazione del MainViewController dopo che lo UIImagePickerController
è stato eliminato: {{0, 0}, {1024, 748}} (Questo è il caso in cui non ci sono problemi.)
Grazie in anticipo per la vostra attenzione e impegno!
Grazie, questo è già parte della soluzione. Ora l'app sembra corretta dopo che ho lasciato il selettore di immagini.Ma ora c'è un nuovo problema: quando ruoto il dispositivo, la barra di stato salta alla posizione corretta (in alto) ma il resto della mia app non ruota e rimane di lato ... Hai risolto anche tu questo problema? –
La mia app è di tipo ritratto, quindi non ho riscontrato questo problema. Se trovi una soluzione, postala qui per farla vedere agli altri. – Firefly
non funziona affatto – user2159978