前回は、いわば番外編的なトピックとして、iOSにおけるカレンダーや日時の扱い方の基本的な部分を取り上げました。というのも、その前の回に「万年日めくりカレンダー」を作成した際にCalendarやDateについて詳しく説明することができなかったので、それについて補足する必要を感じたからでした。
思い出してみると、ここ最近の流れとしては、カレンダーや日時といった基本的なデータの処理ではなく、iOSのちょっと特殊なビューコントローラーを使ってみる、というところにあったのです。どこが特殊かというと、ほかの(複数の)ビューコントローラーを管理して複数ページの表示を切り替えるような機能を持っているという点でした。例えば、ナビゲーションコントローラーやタブバーコントローラー、そして日めくりカレンダーで使ったページビューコントローラーがそれにあたります。
そして今回は、同じ意味で特殊なビューコントローラーであるスプリットビューコントローラー(UISplitViewController)を扱います。これはiOSのビューコントローラーの中では比較的新しいもので、iPadの大きな画面を有効に活用するために考えられたものです。その名前からもわかるように、画面を分割(スプリット)して、2つの異なるビューコントローラーの内容を表示できるようにします。Swift Playgroundsで使えるアプリ画面は、大きさも縦横比もどちらかというとiPhoneに近いのですが機種としてはあくまでiPadなので、iPhoneでは例外(「Plus」モデルのランドスケープ画面)を除いて有効に機能しないスプリットビューコントローラーも使えるのです。
とにかく画面を分割表示してみる
それではさっそくスプリットビューコントローラーを使ってみましょう。すでに述べたように、これも一種のビューコントローラーなので、プレイグラウンドのライビューに直接張り付けることができます。もちろんそれだけでは意味がないので、スプリットビューコントローラーの配下に2つのビューコントローラーを設定します。いずれもデフォルトのUIViewControllerクラスから作ったオブジェクトで、背景色をオレンジとグリーンに塗り分けただけのものです。
2つのビューコントローラーは、スプリットビューコントローラーのviewControllersというプロパティに配列としてセットすればいいのです。preferredDisplayModeというプロパティは、iPadの9.7インチモデルなら、特に設定しなくても2つのビューコントローラーの画面が表示されますが、12.9インチでは.allVisibleに設定しないと、1つしか表示されません。デフォルトでは、画面の縦横比や面積に応じて自動的に表示構成が変わるのです。どんな状況でも2つの画面を常に表示しておくためには、.allVisibleに設定しておくのが安心です。
これでとりあえず2つのビューコントローラー画面を同時に見ることができる状態は確保できました。もちろんこれだけでは何の役にも立たないので、それぞれのビューコントローラーに相応の機能を持たせていきましょう。
この連載の記事
- 第100回 SceneKitの物理現象シミュレーションとアニメーションをARKitに持ち込む
- 第99回 「物理学体」と「物理学場」を設定して物理現象をシミュレーション
- 第98回 SceneKitのノードに動きを加えるプログラム
- 第97回 いろいろな形のノードをシーンの中に配置する
- 第96回 SceneKitの基礎シーンビュー、シーン、ノードを理解する
- 第95回 現実世界の床にボールや自動車のモデルを配置する
- 第94回 ARKitを使って非現実世界との融合に備える
- 第93回 ARKitが使えるiPadを識別するプログラム
- 第92回 Swift Playgrounds 2.1での問題点をまとめて解消する
- 第91回 iPadの内蔵カメラで撮影した写真を認識するプログラム
- この連載の一覧へ