Мне недавно пришлось столкнуться с той же проблемой, и мое решение выглядит следующим образом:
в UIViewController вида, который вы хотите иметь возможность вращать добавить обработчик уведомлений для UIDeviceOrientationDidChangeNotification
-(void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotateFromInterfaceOrientation)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
}
тогда, конечно, вам нужно реализовать свой didRotateFromInterfaceOrientation
метод.
в этом методе вы можете получить текущую ориентацию, используя
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
то, что я сделал затем, было оценка представления, которое я хочу отобразить, основываясь на ориентации
switch (orientation) {
case UIDeviceOrientationLandscapeLeft:
NSLog(@"UIDeviceOrientationLandscapeLeft");
[self presentModalViewController:LandscapeView animated:YES];
break;
case UIDeviceOrientationLandscapeRight:
NSLog(@"UIDeviceOrientationLandscapeRight");
[self presentModalViewController:LandscapeView animated:YES];
break;
case UIDeviceOrientationPortraitUpsideDown:
NSLog(@"UIDeviceOrientationPortraitUpsideDown");
[LandScapeview dismissModalViewControllerAnimated:YES];
break;
case UIDeviceOrientationPortrait:
NSLog(@"UIDeviceOrientationPortrait");
[LandscapeView dismissModalViewControllerAnimated:YES];
break;
case UIDeviceOrientationFaceUp:
NSLog(@"UIDeviceOrientationFaceUp");
break;
case UIDeviceOrientationFaceDown:
NSLog(@"UIDeviceOrientationFaceDown");
break;
default:
break;
}
}
Я надеюсь, что смогу немного помочь.