2011-11-09 13 views
10

Ho un'applicazione per iPhone che desidero iniziare con la barra di stato nascosta, mostrare una schermata iniziale e riattivare la barra di stato quando viene caricato il contenuto da mostrare (ci vogliono alcune volte dal momento che deve essere caricato su internet), utilizzando [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]. Voglio che la mia vista del contenuto venga ridimensionata e posizionata correttamente dopo che la barra di stato è mostrata e nascosta. Voglio che la mia applicazione sia in grado di funzionare con qualsiasi orientamento del dispositivo (forse escludendo l'orientamento top-down come specificato nelle linee guida Apple).ridimensionamento del contenuto dopo che la barra di stato dell'iPhone è mostrata/nascosta

Il mio problema è che non riesco a far apparire l'applicazione come dovrebbe. O mostra uno spazio vuoto di 20pt dopo l'autorotazione o è nascosto sotto la barra di stato quando appare.

Quale dovrebbe essere il modo corretto di gestirlo?

Non l'ho ancora testato, ma credo che gli stessi problemi si presenterebbero dalla barra delle chiamate in arrivo.

EDIT:

cercherò di spiegare meglio qual è il problema. All'avvio dell'applicazione, la barra di stato è nascosta e nel sistema di coordinate della finestra l'angolo superiore dell'area visibile della finestra è 0,0 nel sistema di coordinate della finestra. Quindi faccio scorrere nella barra di stato. Questo non cambia la dimensione della finestra, quindi 0,0 punti è ora nascosto dietro la barra di stato. In alto a sinistra dell'area visibile della finestra è 0,20 e devo spostare la vista su quelle coordinate (e ridimensionarla correttamente a 320 * 460). Ma se ruoto il dispositivo, quindi di nuovo alla posizione originale, la coordinata in alto a sinistra dell'area della finestra visibile diventa di nuovo 0,0, e la finestra viene ora dimensionata a 320 * 480.

Una soluzione è mantenere una bandiera che dice se il telefono è stato ruotato prima, ma non c'è un modo per non modificare le coordinate della finestra quando ruoto in un'altra posizione e poi di nuovo?

+2

Hanno hai impostato le maschere autoresizing sulla tua vista? – titaniumdecoy

risposta

1

Sì, lo stesso problema si presenta con la barra di chiamata. In alternativa, la barra di registrazione audio fa la stessa cosa. (È più semplice e forse più economico avviare la registrazione dell'app memo vocale e tornare alla tua app per verificare come gestisce la barra aggiuntiva.)

L'impostazione delle maschere di ridimensionamento automatico nella vista è ciò che di solito regola le cose per te.

Se si sta costruendo l'interfaccia utente in XIB, è possibile giocare con le impostazioni fino a quando le proprie viste cambiano correttamente le dimensioni quando la barra cambia o quando il dispositivo o il simulatore ruota.

Ricordare che anche le impostazioni della maschera nelle sottoview contenute sono importanti.

0

La risposta di @ walt funziona davvero? Ho provato ad aggiungere questo flag a tutte le proprietà della vista del controller di visualizzazione, ma senza fortuna, mi manca lo sth?

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

This solution risolto il mio problema, ma sembra brutto. Devo ridimensionare manualmente il frame di visualizzazione del controller di visualizzazione.

0

Questo dovrebbe risolvere il problema

solo una visione:

[self.view setFrame: [self.view bounds]]; 

Una vista con una vista di scorrimento all'interno

[self.view setFrame: [self.view bounds]]; 
[self.theScroller setFrame: [self.view bounds]]; 

"theScroller è il nome del mio ScrollView

Problemi correlati