2009-09-01 11 views

Respuesta

17

Observar UIDeviceOrientationDidChangeNotification:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil]; 

... 

- (void)orientationDidChange:(NSNotification *)note 
{ 
    NSLog(@"new orientation = %d", [[UIDevice currentDevice] orientation]); 
} 

UIDevice Class Reference

Debo señalar que yo uneed para añadir -beginGeneratingDeviceOrientationNotifications cuando se desea que estas notificaciones se envíen, y llamar a -endGeneratingDeviceOrientationNotifications cuando se desea que se detengan. Hay un impacto de la batería de generar estos, por lo que solo debes hacerlo cuando tu vista esté en pantalla. UIViewController hace todo esto por ti, así que si tienes un controlador de vista, vale la pena dejar que haga el trabajo.

2

Usted puede suscribirse a la notificación global y recibir una llamada cuando se gira el dispositivo, no lo puedo hacer nada por ti, aunque ..

[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(didRotate:) 
name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 
3

Si lo que desea es ajustar la vista a nuevo tamaño/diseño cuando cambios de orientación, debe simplemente anular su método layoutSubviews.

Se llamará siempre que cambie el tamaño de la vista, lo que generalmente ocurre cuando se gira la vista.

+0

Esta sería una solución perfecta si los cambios realizados en una llamada de layoutSubviews fueran animables. –

Cuestiones relacionadas