UISplitViewController的简单使用以及制作常见的iPad框架

昨天看陈一发儿(对,没错,就是那个穿的最多,开车最快的发姐,)的录播时,想到了iPad版本的直播软件框架,和UITabbarController + UINavigationController的通用框架模式不一样,这里使用UISplitViewController来实现相应的框架模式,先看一张效果图

SpliteViewController-HD-iloveimg-compressed.gif

下面开始上代码,很简单的
在AppDelegate中的设置

#import "AppDelegate.h"
#import "MasterViewController.h"
#import "DetailsViewController.h"
#import "FirstViewController.h"
#import "SecondViewController.h"
#define Width [UIScreen mainScreen].bounds.size.width
@interface AppDelegate ()
@property (nonatomic,strong) UINavigationController *navigationControllerDetails;
@property (nonatomic,strong) UINavigationController *navigationControllerFirst;
@property (nonatomic,strong) UINavigationController *navigationControllerSecond;
@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    [self setupSpliteViewController];
    return YES;
}

#pragma mark 设置SpliteViewController
- (void)setupSpliteViewController
{
    //左侧主视图
    MasterViewController *master = [MasterViewController new];
    
    //右侧默认视图
    DetailsViewController *details = [DetailsViewController new];//刚进入应用默认显示的Controller
    self.navigationControllerDetails = [[UINavigationController alloc]initWithRootViewController:details];

    FirstViewController *first = [FirstViewController new];
    self.navigationControllerFirst = [[UINavigationController alloc]initWithRootViewController:first];

    SecondViewController *second = [SecondViewController new];
    self.navigationControllerSecond = [[UINavigationController alloc]initWithRootViewController:second];

    self.spliteViewController = [[UISplitViewController alloc]init];
    self.spliteViewController.viewControllers = @[master,self.navigationControllerDetails,self.navigationControllerFirst,self.navigationControllerSecond];

    self.spliteViewController.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;//设置左侧主视图Master Controller的显示模式,现在是一直显示。如果设置为横屏显示竖屏不显示,还可以再设置一下相关的手势属性,如presentsWithGesture
    self.spliteViewController.maximumPrimaryColumnWidth = 128.0f;//调整左侧主视图Master Controller的最大显示宽度
    self.window.rootViewController = self.spliteViewController;
}


说明

  1. DetailsViewController是默认显示的视图控制器
  2. MasterViewController是左侧的管理视图控制器。我们可以在这里面做一些操作,比如切换控制器,自定义一些视图。

如下代码,在MasterViewController中

#import "MasterViewController.h"
@interface MasterViewController ()
@property (nonatomic,strong) UINavigationController *navigationControllerDetails;
@property (nonatomic,copy) NSArray *dataSource;
@end

@implementation MasterViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"%@",self.splitViewController.viewControllers);
    self.dataSource = self.splitViewController.viewControllers;
}

- (IBAction)changeViewController:(id)sender {
    UIButton *btn = (UIButton *)sender;
    [self.splitViewController showViewController:self.dataSource[btn.tag] sender:nil];
}

几乎所有的代码都在上面了,你们可以尝试自己写一下demo。当然,除了我的这种写法方式,肯定还会有别的更好的,希望各位能多多指教,谢谢了。

你可能感兴趣的:(UISplitViewController的简单使用以及制作常见的iPad框架)