Обычно я помещаю анимацию, которая возникает, когда пользователь поворачивает устройство (главным образом, манипулируя кадрами видов), в методе willAnimateToInterfaceOrientation. В форме скелета это выглядело бы так:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration
{
//NSLog(@"willAnimateRotationToInterfaceOrientation: %d", toInterfaceOrientation);
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
{
// portrait
}
else
{
// landscape
}
}
РЕДАКТИРОВАТЬ: В ситуациях, когда мне нужно запомнить ротацию устройства для будущего использования, я установил ivar в своем классе контроллера представления под названием currentOrientation (тип int), а затем сделал это:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
//NSLog(@"shouldAutorotateToInterfaceOrientation: %d", toInterfaceOrientation);
if (toInterfaceOrientation == UIDeviceOrientationPortrait || toInterfaceOrientation == UIDeviceOrientationPortraitUpsideDown ||
toInterfaceOrientation == UIDeviceOrientationLandscapeLeft || toInterfaceOrientation == UIDeviceOrientationLandscapeRight)
{
currentOrientation = toInterfaceOrientation;
}
return YES;
}
Затем, при запуске методов в контроллере вида, я знаю, в какой ориентации находится устройство.