- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
[11567:207]Up
我查到有的资料说,“shouldAutorotateToInterfaceOrientation doesn't work well if you are using [someViewaddSubview]”(使用addSubview方式添加的ViewController,shouldAutorotate方法不能正常工作)。
??
然而,当iPad旋转时,除了视图第1次load时以外,shouldAutorotateToInterfaceOrientation方法不会被调用。
在这个View Controller(iPadMainVC)中,英雄合击传奇,我把前面的shouldAutorotateToInterfaceOrientation方法代码复制粘贴进去了。
传奇sf/kmyhy/article/details/7180065#comments
if (interfaceOrientation== UIDeviceOrientationPortrait) NSLog(@"Up");
我需要把它修改为:
此后无论你怎样旋转屏幕,shouldAutorotate方法都不会调用了。
这样,shouldAutorotate方法才能很好地工作。
[11567:207] Up
结论
这样,如果要在程序中很好地支持旋屏,复古传奇,尽量不要使用addSubview方式切换视图。我们可以用popoverViewController或presentModalViewController替代,SF999。
这个方法工作得很好,当屏幕从正向模式旋转到倒置人像模式时,View Controller如预期旋转。
return interfaceOrientation == UIInterfaceOrientationPortrait
UINavigationController *nController = [[UINavigationController alloc]initWithRootViewController:mainVC];
程序运行时,在登录完成,刚刚进入iPadMainVC视图的时候,shouldAutorotate方法会调用3次:
??
??
如果是这样,那么我原来的View Controller(登录页面)就是用addSubview添加的:
{
bundle:nil];
if(interfaceOrientation == UIDeviceOrientationPortraitUpsideDown) NSLog(@"Down");
[11567:207] Up
interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown;
window.rootViewController=rootController;
当登录完成,我用以下代码显示另一个View Controller:
self.view.window.rootViewController = nController;
我添加了一些打印语句在该方法中进行debug:
??
[nController setNavigationBarHidden:YES animated:NO];
[window addSubview:rootController.view];
在我的app中,传奇战歌,有一个登录页面ViewController,sf999,我在其中实现了shouldAutorotateToInterfaceOrientation方法,让它支持自动旋屏:
}
[window makeKeyAndVisible];
iPadMainVC *mainVC=[[iPadMainVC alloc]initWithNibName:@"iPadMainVC"