Вы можете попросить UIDevice сгенерировать уведомления об ориентации устройства:
UIDevice *myDevice = [UIDevice currentDevice];
[myDevice beginGeneratingDeviceOrientationNotifications];
Ваши подклассы UIViewController могут прослушивать это уведомление, выполнив следующие действия:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
и написав метод didRotate:как это:
- (void)updateOrientation
{
UIInterfaceOrientation orientation = self.interfaceOrientation;
// handle new orientation
...
}
- (void)didRotate:(NSNotification *)notification
{
[self updateOrientation];
}
Преимущество этого по сравнению со "стандартным"
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation duration:(NSTimeInterval)duration
заключается в том, что иногда, основываясь на структуре и вложенности ваших UIViewControllers, вы можете не всегда получатьвызовы willAnimateRotationToInterfaceOrientation.Вместо этого обработка уведомления гарантирует, что ваши ViewControllers, которые должны обрабатывать изменения, всегда будут знать, когда они произошли.