通用设备开发-设置RootViewController

iPad和iPhone因屏幕尺寸不同,在横竖屏显示上特定界面会存在很大区别

以QZone为例:
在iPhone设备上,默认根控制器为一个Tabbar,子视图是一个TableView,一个上下结构布局
在iPad设备上,默认横屏/竖屏模式下显示左右结构

以此为例进行演示,为了快速演示效果,这里使用storyBoard的方式

  • UI搭建:

1.在storyBoard中,放一个Split View Controller作为iPad的根控制器,子视图随便放了两个ViewController,并默认让Split View Controller为initial View Controller

2.另外放置一个TabBarController,作为iPhone的根控制器
Split View Controller已经默认勾选了is initial View Controller
所以为了快速获取到TabBarController,这里给TabBarController设置了一个storyBoard ID

通用设备开发-设置RootViewController_第1张图片
storyboard.png

因为需要根据不同设备来选择根控制器,所以来到AppDelegate中进行处理

  • AppDelegate设置根控制器

为了提升代码可读性,这里抽取了一个宏,用来判断当前设备是否为iPhone

#define isiPhone ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone) 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    /*
     UIUserInterfaceIdiomUnspecified = -1,
     UIUserInterfaceIdiomPhone NS_ENUM_AVAILABLE_IOS(3_2),      // iPhone and iPod touch style UI
     UIUserInterfaceIdiomPad NS_ENUM_AVAILABLE_IOS(3_2),        // iPad style UI
     UIUserInterfaceIdiomTV NS_ENUM_AVAILABLE_IOS(9_0),         // Apple TV style UI
     UIUserInterfaceIdiomCarPlay NS_ENUM_AVAILABLE_IOS(9_0),    // CarPlay style UI
     */
    
    if (isiPhone) {
        
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
        UITabBarController *tabbarController = [storyboard instantiateViewControllerWithIdentifier:@"iPhone"];
        self.window.rootViewController = tabbarController;
        
    }
    
    return YES;
}

这样就简单的实现了iPhone和iPad通用设备开发的根控制器处理

iPad Air 2 横屏:

通用设备开发-设置RootViewController_第2张图片
iPad Air2_horizontal.png

iPad Air 2 竖屏:

通用设备开发-设置RootViewController_第3张图片
iPad Air2_vertical.png

iPhone 6s plus 横屏:

通用设备开发-设置RootViewController_第4张图片
iPhone6p_horizontal.png

iPhone 6s plus 竖屏:

通用设备开发-设置RootViewController_第5张图片
iPhone6p_vertical.png
  • UISplitViewController iOS提供的专门用于实现左右结构界面的控制器
1> iOS8以后,iPhone和iPad都可以使用
2> MasterVc : 主视图控制器   一般显示在左边
3> DetailVc : 明细视图控制器  一般显示在右边
4> 默认样式:
iPad竖屏: 显示明细控制器,可以通过手势来显隐主视图
iPad横屏: 显示主视图&明细视图,不可以通过手势显隐主视图
iPhone竖屏: 如果主视图为UIViewController,则显示主视图;如果主视图为UINavigationVc的子控制器,则会显示明细控制器
iPhone横屏: iPhone 6/s Plus下,会显示左右结构,其他设备和iPhone竖屏时的显示一样

你可能感兴趣的:(通用设备开发-设置RootViewController)