2009-09-01 11 views

Odpowiedz

17

przestrzegać 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

Należy zauważyć, że yo uneed dodać -beginGeneratingDeviceOrientationNotifications kiedy chcesz te powiadomienia mają być wysyłane, i nazywają -endGeneratingDeviceOrientationNotifications kiedy chcesz je zatrzymać. Ich generowanie ma wpływ na baterię, więc powinieneś to robić tylko wtedy, gdy widok jest na ekranie. UIViewController robi to wszystko dla ciebie, więc jeśli masz kontroler widoku, warto pozwolić mu wykonać pracę.

2

Możesz zapisać się do globalnego powiadomienia i uzyskania połączenia, gdy urządzenie obraca się, to przyzwyczajenie zrobić coś dla ciebie choć ..

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

Jeśli tylko chcesz, aby dostosować widok do nowego rozmiaru/Układ kiedy zmiany orientacji, należy po prostu zastąpić jego metodę layoutSubviews.

Zostanie wywołana, gdy zmieni się rozmiar widoku, co zwykle ma miejsce, gdy widok jest obrócony.

+0

To byłoby idealne rozwiązanie, gdyby zmiany dokonane w wywołaniu layoutSubviews mogły być animowane. –

Powiązane problemy