UIviewController方法- (BOOL)shouldAutorotate 返回值为YES的时候是不生效的。
由于UIViewController放置在Navigation中,而由于Navigation不人性化的设计,navigation的- (BOOL)shouldAutorotate是不会根据显示ViewController的-
(BOOL)shouldAutorotate设置的值来改变的。
附上终极解决办法:将下面这段代码贴在AppDelegate.m的最后面,这个时候Navigation就会根据你显示的ViewController改变返回值了,然后你再去ViewController中覆写方法,返回NO,这时候,方法生效了!bingo!
- @implementation UINavigationController (Rotation)
- - (BOOL)shouldAutorotate
- {
- return [[self.viewControllers lastObject] shouldAutorotate];
- }
- - (NSUInteger)supportedInterfaceOrientations
- {
- return [[self.viewControllers lastObject] supportedInterfaceOrientations];
- }
- - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
- return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
- }
- @end