2010-10-10 10 views
10

tengo el siguiente código:iPad orientación de lanzamiento cuando está plana en la superficie

-(void)viewWillAppear:(BOOL)animated { 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface]; 

    if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) { 
     NSLog(@"Device Landscape"); 
    } else { 
     NSLog(@"Device Portrait"); 
    } 

} 

Esto funciona perfectamente para el simulador y en el dispositivo, pero sólo si el iPad no es plano sobre una superficie, por ejemplo, si i lay el iPad en mi escritorio y cargar la vista, dirá su retrato y no puedo detectar la orientación cuando aparece la vista.

¿Alguna idea de la mejor manera de detectar la orientación de la interfaz cuando se llama a viewWillAppear?

Gracias

+0

bien, ¿qué quiere que su aplicación debe hacer si el IPAD es, de hecho, boca arriba? –

+0

Quiere saber si quiere o no mostrar la vista en horizontal o vertical cuando el dispositivo está plano. – Emil

+0

Tengo una subvista que se muestra en un lugar diferente dependiendo de si la vista es horizontal/vertical. Entonces necesito saber qué orientación es la interfaz cuando aparece la vista. – Steve

Respuesta

26

Debe utilizar [self interfaceOrientation] en lugar de la orientación del dispositivo.

0

En primer lugar, ¿conoce la propiedad interfaceOrientation de UIViewController? Parece que estás intentando duplicarlo. Si realmente desea hacerlo, simplemente suscríbase a las notificaciones de cambio de orientación del dispositivo, compruebe si la orientación nueva es válida (es una macro para eso) y, en caso afirmativo, almacene el valor en alguna variable (como lastSeenOrientation). Entonces puedes confiar en ese valor donde quieras.

8

[[UIApplication sharedApplication] statusBarOrientation] también funciona si está en alguna parte del código que no tiene acceso a [self interfaceOrientation]

+0

+1, realmente funciona bien, gracias! –

Cuestiones relacionadas