En mi aplicación de sistema operativo de iPhone, quiero (necesito) observar cambios en la orientación del dispositivo para reorganizar ciertas partes de la pantalla. El enfoque que utilicé fue usar CGRect frame = [UIScreen mainScreen].applicationFrame
para obtener el tamaño de la pantalla, y desde allí calcular el tamaño y/o el posicionamiento de otros controles (también intenté self.view.frame
).Tamaño de fotograma/ventana "incorrecto" después de la reorientación en iPhone
Todas las pruebas se realizaron hasta el momento en modo vertical, por lo que pude centrarme en la programación de las funciones principales y más tarde solo hacer algunos ajustes para Horizontal. Y aquí entra el problema: en -(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
agregué algunos registros para verificar los tamaños antes de continuar, pero aparentemente los valores de Ancho y Alto son "incorrectos" (digo "incorrecto" porque a primera vista los valores no tienen sentido para mí)
Aquí está la salida de algunos de registro:
- Rotación: paisaje [w = 300,000000, h = 480.000000]
- Rotación: Retrato [w = 320,000000, h = 460.000000]
Los valores para "w" y "h" en Landscape parecen invertidos para mí, esperaba w = 480 yh = 300.
¿Qué estoy haciendo mal? El código que utilicé para depurar está debajo.
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = [UIScreen mainScreen].applicationFrame;
CGSize size = frame.size;
NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",
UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
size.width, size.height]);
}
hhmm ... si uso 'self.view.bounds' (teniendo en cuenta que" self.view "es la vista principal principal, donde se agregan otras subvistas para componer la aplicación) obtengo los valores esperados. Ahora me sale este comportamiento Recuerdo algo de lo que hablaron en el curso Standford iPhone Dev en iTues U, pero no estoy seguro de si está relacionado. De todos modos, todavía me gustaría tener una opinión más concreta. –
También, curiosamente, 'self.view.frame' funciona bien si tiene un controlador de navegación, pero si no lo hace, parece que tiene que usar' self.view.bounds'. – Rob