2009-09-01 7 views

risposta

17

Osservare 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

Vorrei sottolineare che yo uneed da aggiungere -beginGeneratingDeviceOrientationNotifications quando si desidera queste notifiche da inviare, e chiamare -endGeneratingDeviceOrientationNotifications quando si desidera loro di smettere. C'è un impatto della batteria nel generare questi, quindi dovresti farlo solo quando la tua vista è sullo schermo. UIViewController fa tutto questo per te, quindi se hai un controller di visualizzazione, vale la pena lasciarlo fare il lavoro.

2

È possibile iscriversi a una notifica globale e ottenere una chiamata quando viene ruotato il dispositivo, non ci vorrà fare qualcosa per voi anche se ..

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

Se si vuole solo modificare vista a nuovo formato/layout quando cambiamenti di orientamento, dovresti semplicemente sostituire il metodo layoutSubviews.

Viene richiamato ogni volta che si modifica la dimensione della vista, che di solito accade quando la vista viene ruotata.

+0

Questa sarebbe una soluzione perfetta se le modifiche apportate a una chiamata di LayoutSubviews fossero animabili. –

Problemi correlati