纵向和横向的差异 UI ipad

Difference UI for portrait and landscape ipad

我想创建一个这样的应用程序:

在 iphone(纵向和横向)和 ipad 纵向上,我有一个 table 查看屏幕,点击项目行将导航到另一个详细信息屏幕,看起来像其他基本屏幕应用。
但是当我在 ipad 上旋转屏幕转到横向时,屏幕现在有两个剖面视图
这是我所做的:

但问题是我无法将 UISplitViewController 推送到根控制器,因为它需要成为根控制器。
我想知道如何处理这个问题
我的方法正确吗?还有其他办法吗?

更新:我像这样更改根视图控制器

  // this snippet is in UINavigationController (I use as root viewcontroller) 
        if([self isInTabletLandscape]){
             self.splitViewController.viewControllers = [NSArray arrayWithObjects:[[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil], self.propertyLandViewController, nil];
            [[UIApplication sharedApplication].keyWindow setRootViewController:self.splitViewController];
        }else{
 // it doesn't work
            [[UIApplication sharedApplication].keyWindow setRootViewController:self];
            }
        }

如果您在 iOS 8 上开发,您应该使用 Size Classes,这样您就可以完全根据 iPhone/iPad 纵向和 iPad 横向更改布局。不幸的是,在 iOS 7 上,尺寸 类 只能区分 iPhone 和 iPad。

在这两种情况下,正确的部分 (2) 都可以使用 containerView 轻松处理。

知道设备是iPad还是iPhone后。您可以尝试删除 RootViewController。

       appDelegate.window.rootViewController = nil;

然后用新的 SplitViewContloller 设置根视图控制器

        id objClass =[[SplitViewController alloc]initWithNibName:@"SplitViewController" bundle:nil];
        masterVC.delegate = detailVC;
        detailVC.delegate = objClass;
        [objClass setViewControllers:@[masterNavigate,detailNavigate]];

        [appDelegate.window setRootViewController:objClass];

我的建议是完全不要使用 Split View Controller。创建一个自定义视图控制器,它将嵌入您的 table 视图控制器和第二个控制器。此外,您可以在您创建的自定义控制器中实现界面旋转逻辑。

https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/SplitViewControllers.html

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   MyFirstViewController* firstVC = [[MyFirstViewController alloc] init];
   MySecondViewController* secondVC = [[MySecondViewController alloc] init];

if ( ([[UIDevice currentDevice] orientation] ==  UIDeviceOrientationPortrait)  ){

   UISplitViewController* splitVC = [[UISplitViewController alloc] init];
   splitVC.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, nil];

    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.rootViewController = splitVC;
   [window makeKeyAndVisible];
 }
    else
{
// Display tableview

}
 return YES;
 }


我想这可能对你有帮助..