2

我在我的应用程序中使用了拆分视图。
当我在 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 { return 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];

}

但这是行不通的。任何人都可以帮助我吗?

4

2 回答 2

4

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

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

哦,为自己省点麻烦:在 中shouldAutorotateToInterfaceOrientation:,只需返回 YES。在 iPad 上,您总是希望自动旋转。

于 2012-11-22T17:09:16.520 回答
0

在 iOS5 及以下您应该使用

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

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

于 2012-11-22T16:56:55.427 回答