2010-09-04 9 views
10

Ho fatto quello che ha detto questa domanda qui: Landscape Mode ONLY for iPhone or iPadiPad larghezza del telaio e l'altezza disguido nel paesaggio

ma il view.frame.size.height è ancora 1024, che è l'altezza quando il dispositivo è in modalità ritratto, sicuramente quando l'interfaccia ruota i valori dell'interruttore di larghezza e altezza?

(ad esempio, hai voluto dividere lo schermo in 3 viste, per un'app che è sia orizzontale che verticale, e hai fatto view.frame.size.width/3, in orizzontale che non sarebbe corretto come larghezza valore non sarebbe in realtà la larghezza)

Sono sicuro su iPhone l'interruttore di larghezza e altezza, quindi perché non sull'iPad?


Questo mi ha colpito ancora io 'non sto lavorando con un pennino o, qualcuno potrebbe dare una risposta accettabile? (cioè uno che non coinvolge manualmente la larghezza e l'altezza)

Una volta che la taglia è stata assegnata a una risposta, inizierò un'altra taglia per 250 e la assegnerò alla stessa persona.

+0

Iniziare una taglia su questo. La taglia verrà assegnata alla prima persona che pubblica il codice di una classe che lo fa correttamente. –

+0

Non sono sicuro di quello che ho fatto, ma in qualche modo l'ho risolto. Mi sono liberato del pennino e ho riscritto la classe –

+0

Sto lavorando senza pennino. Ma non posso ottenere la larghezza e l'altezza per essere corrette dopo l'autorotazione. –

risposta

24

Non hai specificato quale "vista" stai interrogando. Supponendo che questa sia la sottoview di livello superiore della finestra:

È necessario interrogare la vista bounds non la sua frame. frame si trova nella coordinata in cui è definita la vista (il mondo esterno), pertanto può rimanere costante durante la rotazione. bounds è la coordinata utilizzata "all'interno" della vista e per le sue sottoview. Questo cambia quando ruoti.

+0

che suona bene, ma se il frame non è 'corretto', i pulsanti non sono cliccabili ecc. – Jake

2
+ (int) currentWidth 
{ 
UIScreen *screen = [UIScreen mainScreen]; 
int width = screen.currentMode.size.width; 
int height = screen.currentMode.size.height; 
return (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))? MAX (width, height) : MIN (width, height); 
} 

ho trascorso un po 'cercando di capire la soluzione più semplice per un problema frustrante, e questo è stato il meglio che ho potuto trovare. Spero che possa aiutare.

+0

Finora, non posso fare di meglio neanche. Otterrai la taglia se nessuno lo fa. –

Problemi correlati