UISplitViewControllerってあまり融通が効かないですよね。github漁ったけど自分が望むようなものは見つからず・・・せっかくなので自分で作りました。ヘッダやフッタを表示することもできます。

https://github.com/stack3/STSplitViewController

こんな風に画面の向きに関わらずDetailの幅を固定にして、その分Masterの幅を大きくすることができます。Tweetbot for iPadがこうなっていて、同じようにしたかったのです(笑)

f:id:eimei23:20130227215830p:plain

f:id:eimei23:20130227215838p:plain

MasterとDetailの間の区切り線(Divider)の幅は変更可能です。サンプルではちょっと太めにしてます。また独自のViewをDividerとして使うこともできます。

HeaderやFooterを配置したとき。

f:id:eimei23:20130227220220p:plain

Footerが欲しかったのは、もちろんiAd Bannerを貼り付けるため(笑)Headerは今のところ使う予定はないけどおまけです。

使い方

MasterViewControllerとDetailViewControllerを配置する

STSplitViewController *splitViewController = [[STSplitViewController alloc] init];  
splitViewController.dividerWidth = dividerWidth;
UIViewController *masterViewController = [[STMasterViewController alloc] init];
UIViewController *detailViewController = [[STDetailViewController alloc] init];
splitViewController.masterViewController = masterViewController;
splitViewController.detailViewController = detailViewController;
[self presentViewController:splitViewController animated:YES completion:nil];

HeaderViewControllerとFooterViewControllerを配置する

STSplitViewController *splitViewController = [[STSplitViewController alloc] init];
splitViewController.dividerWidth = dividerWidth;
splitViewController.masterViewController = [[STMasterViewController alloc] init];
splitViewController.detailViewController = [[STDetailViewController alloc] init];
splitViewController.headerViewController = [[STHeaderViewController alloc] init];
splitViewController.headerViewHeight = 80;
splitViewController.footerViewController = [[STFooterViewController alloc] init];
splitViewController.footerViewHeight = 80;

[self presentViewController:splitViewController animated:YES completion:nil];

サンプルコードはプロジェクトにも付属しているので、詳しくはそちらを参考にしてください。

ソースコードは短くシンプルなので、拡張も簡単だと思います。もちろんMIT Licenseです。誰かのお役に立てれば幸いです。