2010-09-04 12 views
10

he hecho lo que esta pregunta dijeron aquí: Landscape Mode ONLY for iPhone or iPadiPad ancho del marco y la confusión de altura en el paisaje

pero el view.frame.size.height sigue siendo 1024, que es la altura cuando el dispositivo está en posición vertical, sin duda cuando la interfaz gira los valores de interruptor de ancho y altura?

(supongamos que desea dividir la pantalla en 3 vistas, para una aplicación que es a la vez horizontal y vertical, y lo hizo view.frame.size.width/3, en el paisaje que no sería correcto como el ancho valor en realidad no sería el ancho)

Estoy seguro de que en el iPhone el interruptor de ancho y alto, ¿por qué no en el iPad?


Esto me ha vuelto a golpear. Tampoco estoy trabajando con una punta, ¿podría alguien dar una respuesta aceptable? (es decir, uno que no implique cambiar manualmente el ancho y el alto)

Una vez que se haya otorgado la recompensa a una respuesta, comenzaré otra recompensa por 250 y se la otorgaré a la misma persona.

+0

Comenzando una recompensa por esto. La recompensa se otorgará a la primera persona que publique código de una clase que lo haga correctamente. –

+0

No estoy seguro de lo que hice pero de alguna manera lo "arreglé". Me deshice de mi pluma y reescribí la clase –

+0

Estoy trabajando sin una punta. Pero no puedo hacer que el ancho y la altura sean correctos después de la autorrotación. –

Respuesta

24

No ha especificado qué "vista" está consultando. Suponiendo que esta es la subvista de nivel superior de la ventana:

Debe consultar la vista bounds no es frame. frame está en la coordenada en la que se define la vista (el mundo exterior) por lo tanto, puede permanecer constante a medida que gira. bounds es la coordenada utilizada "dentro" de la vista y para sus subvistas. Esto cambia cuando giras.

+0

que suena bien, pero si el cuadro no es "correcto", no se puede hacer clic en los botones, etc. – 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); 
} 

Pasé un tiempo tratando de averiguar la solución más sencilla a un problema frustrante, y esto era lo mejor que podía ocurrir. Espero que pueda ayudar.

+0

Hasta ahora, tampoco puedo hacer nada mejor. Obtendrás la recompensa si nadie lo hace. –

Cuestiones relacionadas