2010-08-29 15 views

Respuesta

7

parecer, todo lo que tengo que hacer es crear una visión basada en la aplicación a su vez shouldAutoRotateToInterfaceOrientaion a YES, y crear dos subclases UIViewController con archivos xib individuales, a continuación, añadir esto a la vista controlador aplicación:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil]; 

y añade este método en el controlador vista de aplicación, así:

-(void)orientationChanged { 
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; 
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) { 
     [[NSBundle mainBundle] loadNibNamed:@"Portrait" owner:self options:nil]; 
    } 
    else { 
     [[NSBundle mainBundle] loadNibNamed:@"Landscape" owner:self options:nil]; 
    } 

} 

y eso es todo, cuando el dispositivo se hace girar las cargas xib de automóviles en la orientación correcta.

editar: también necesita agregar dos controladores de vista mediante programación (@property y @synthesize también), y dos controladores de vista en el appviewcontroller.xib en IB, cada uno con el nombre de clase correspondiente a la subclase viewcontroller de cada xib que creó. luego agrega una vista conéctala al propietario del archivo y conecta las salidas en IB a los controladores de vista que creaste en ib y debería ser

+0

Esto funciona muy bien para un iPhone. iPad necesitaba pasos adicionales: #define DegreesToRadians (x) ((x) * M_PI/180.0); (self.view.transform = CGAffineTransformMakeRotation (DegreesToRadians (180)) Al menos en mi caso. – TrekOnTV2017

+0

+1 Funcionó para mí ... Gracias ... :) – HDdeveloper

Cuestiones relacionadas