2010-07-02 9 views
9

Estoy tratando de tener una de las vistas de los niños en mi pantalla (propiedad de un controlador de vista) no girar cuando el dispositivo gira. Mi controlador de vista permite las rotaciones como debería, y estoy tratando de aplicar una rotación de 90 grados a la única vista "estacionaria" para contrarrestar la rotación general.Establecer una transformación de rotación a un UIView o su capa no parece funcionar?

El problema es que todo parece girar de todos modos, y la transformación no parece hacer nada. Intenté con una transformación afín en la vista y con una transformación 3d en la capa (abajo). Se llama al método, pero nunca veo una diferencia visual.

¿Alguna idea? Gracias.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 
{ 
    CALayer *layer = stuckview.layer; 
    layer.transform = CATransform3DMakeRotation(90, 0, 0, 1); 
}  

Respuesta

26

Para ayudar a los demás a encontrar esto, estoy añadiendo un par de frases de búsqueda, como:

prevenir una UIView gire

prevenir un fondo UITableView gire

detener una rotación UIView

detener una rotación de fondo UITableView


Una muestra completa para cualquier orientación:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
    { 
     switch (toInterfaceOrientation) { 
      case UIInterfaceOrientationLandscapeLeft: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress 
       break; 
      case UIInterfaceOrientationLandscapeRight: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees 
       break; 
      case UIInterfaceOrientationPortraitUpsideDown: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees 
       break; 
      default: 
       stuckview.transform = CGAffineTransformMakeRotation(0.0); 
       break; 
     } 
    } 
+0

puedo comprobar y encontrar que UIInterfaceOrientationPortraitUpsideDown no funciona en iOS 6. –

+0

se stuckview un CALayer o una UIView? –

+0

@AdamWaite - ¡Una UIView, como lo indica el nombre y la descripción! ;-) – nekno

4

¿Su código se ha ejecutado realmente? (¿Implementa shouldAutorotateToInterfaceOrientation:?)

stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); 

debe hacer el trabajo.

Nota: Las funciones toman radianes y no grados.

Cuestiones relacionadas