2010-08-18 12 views

Respuesta

1

que podrías algo así, (no tengo Xcode práctica lo que este código podría no ser completamente exactos)

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
if((interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)){ 
WhatYourNewViewClassISCAlled* newView = [[WhatYourNewViewClassISCAlled alloc] initWithNibName:@"NIBNAME" bundle:[NSBundle mainBundle]]; 
[self.navigationController pushViewController:newView animated:YES]; 
} 
+0

Pero entonces la vista con orientación vertical todavía estará en la pila, ¿no es así? Entonces, el botón Atrás señalará lo incorrecto. –

+0

Buen punto, puedes ocultar la barra de navegación cuando las vistas giran o tienen la vista ya creada y fundirla y desvanecer la otra vista cuando ocurre la rotación. – octermircty

1

Ésta es la manera correcta, creo. Lo estoy usando en mis aplicaciones y funciona perfectamente

  1. dispara en girará, no debe girar (espera hasta que el anim rotación está a punto de comenzar)
  2. utiliza la convención de nomenclatura para los archivos de Apple horizontal/vertical (Default.png es Default-landscape.png si quieres Apple para cargar automáticamente una versión del paisaje)
  3. vuelve a cargar el nuevo SEMILLA
  4. que restablece el self.view - esto va a actualizar automáticamente la pantalla
  5. y luego llama a viewDidLoad (Apple NO lo llamará por ti, si vuelves a cargar manualmente un NIB)

(NB stackoverflow.com requiere esta frase aquí - hay un error en el formateador de código)

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) 
    { 
     [[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@-landscape", NSStringFromClass([self class])] owner:self options:nil]; 

     [self viewDidLoad]; 
    } 
    else 
    { 
     [[NSBundle mainBundle] loadNibNamed:[NSString stringWithFormat:@"%@", NSStringFromClass([self class])] owner:self options:nil]; 

     [self viewDidLoad]; 
    } 
} 
Cuestiones relacionadas