UISplitview方向在iOS 5和iOS 5.1中不会改变

时间:2012-11-22 05:39:23

标签: ios uisplitviewcontroller uiinterfaceorientation

我在我的应用程序中使用了拆分视图 当我在iOS 6模拟器中运行我的应用程序时,它根据方向更改旋转并且运行良好但是当我在iOS 5或iOS 5.1模拟器中运行相同的应用程序时,我更改了模拟器的方向,但拆分视图不会根据方向更改而改变。
我还添加了代码

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

-(BOOL)shouldAutorotate
{
    return YES;
}

我使用以下代码添加拆分视图      - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation     {     返回YES;     }

主视图和详细信息视图中的上述方法。

我使用以下代码添加了拆分视图

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
     // obj_PageControlViewController = [[PageControlViewController alloc]initWithNibName:@"PageControlViewController-iPad" bundle:nil];

     MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];
     UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];

     DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
     UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];

     masterViewController.detailViewController = detailViewController;

     self.splitViewController = [[UISplitViewController alloc] init];
     self.splitViewController.delegate = detailViewController;
     self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
     TabBarAppDelegate *appDelegate = (TabBarAppDelegate *)[[UIApplication sharedApplication] delegate];
     [appDelegate.window setRootViewController:self.splitViewController];

}

但它不起作用。任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

你说你添加了shouldAutorotateToInterfaceOrientation:,但你没有说你添加了。要在iOS 5.1或更早版本中自动旋转UISplitViewController,必须在分割视图控制器的两个子视图控制器的视图控制器中提供shouldAutorotateToInterfaceOrientation:(主视图控制器和详细视图控制器) )。

这将起作用,假设拆分视图控制器是应用程序的顶级(根)视图控制器,由Master-Detail模板设置。

哦,省去一些麻烦:在shouldAutorotateToInterfaceOrientation:,只需返回YES。在iPad上,你总是想要自动旋转。

答案 1 :(得分:0)

在iOS5及以下版本中,您应该使用

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

您上面发布的那个(shouldAutorotate)适用于iOS6 +