UISplitViewController的簡單使用以及制作常見的iPad框架

昨天看陳一發(fā)兒對,沒錯,就是那個穿的最多,開車最快的發(fā)姐,????)的錄播時,想到了iPad版本的直播軟件框架,和UITabbarController + UINavigationController的通用框架模式不一樣,這里使用UISplitViewController來實現(xiàn)相應的框架模式,先看一張效果圖

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的顯示模式,現(xiàn)在是一直顯示。如果設置為橫屏顯示豎屏不顯示,還可以再設置一下相關的手勢屬性,如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。當然,除了我的這種寫法方式,肯定還會有別的更好的,希望各位能多多指教,謝謝了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,073評論 4 61
  • 蘋果原來的開發(fā)文檔已更新,此翻譯已過時。。。 來源自蘋果開發(fā)文檔ViewController Programmin...
    MarkLin閱讀 1,828評論 4 8
  • 前言的前言 唐巧前輩在微信公眾號「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各項指標...
    VincentHK閱讀 5,566評論 3 44
  • 模仿下面句子中加粗語句的寫法。 她不是不愛美了,只是不再跟得上美了。退休以后,她的審美來自國產(chǎn)電視劇和廣場舞大媽。...
    小賢哥2017閱讀 450評論 13 1
  • 是否開啟:1狀態(tài) 關閉提示:軟件暫時關閉,優(yōu)惠券可使用狀態(tài) 是否更新:0狀態(tài) 軟件地址:http://www.ba...
    背叛者遠離閱讀 328評論 0 0

友情鏈接更多精彩內容