ユーザーインターフェイスデザイン


ユーザーは、できるだけ簡単な方法で、アプリのインターフェースと対話する必要があります。ユーザーを念頭に置いて、インターフェースを設計し、効率的で明確、かつ簡単にします。


ストーリーボードは、あなたが設計し、グラフィカルな環境であなたのインターフェイスを実装できます。あなたがビルドしている一方で、どのように見えるか明確に確認できます。何が働き何が働いていないかについて即座にフィードバックを取得し、インターフェイスへの変更をすぐに目に見られます。


ModelViewController_v_2x

ビュー階層


ビューは、画面上に自分自身を表示し、ユーザーの入力に反応するだけでなく、それらはまた、他のビューのコンテナとして機能できます。その結果、アプリのビューは、ビュー階層と呼ばれる階層構造に配置されています。ビュー階層 は、他のビューを基準にしたビューのレイアウトを定義します。その階層内では、ビュー内に封入されたビューインスタンスはサブビューと呼ばれ、ビューを囲む親ビューはスーパービューと呼ばれています。ビューインスタンスは複数のサブビューを持つことができますが、それは一つだけしかスーパービューを持つことができません。


ビュー階層の最上位にあるのが ウィンドウ オブジェクトです。UIWindow クラスのインスタンスで表される、ウィンドウ・オブジェクトは、画面上に表示するビューオブジェクトを追加する基本的なコンテナです。それ自体では、ウィンドウは、何もコンテンツを表示しません。コンテンツを表示するには、ウィンドウに (サブビューの階層を持つ) コンテンツビュー オブジェクトを追加します。


コンテンツビューとユーザから見えるサブビューについては、コンテンツビューは、ウィンドウのビュー階層に挿入されなければなりません。ストーリーボードを使用する場合は、この配置は、自動的に設定されます。アプリを起動すると、アプリケーション・オブジェクトは、ストーリーボードをロードし、関連するビューコントローラクラスのインスタンスを作成し、各ビューコントローラのコンテンツビュー階層を解凍し、ウィンドウへの最初のビューコントローラのコンテンツビューを追加します。次の章では、ビューコントローラーを管理する方法について学びますが、今は、ストーリーボードで単一のビューコントローラでの階層を作成することに焦点を当てます。


ビューの種類


あなたのアプリを設計するときには、どのような目的のためにどのようなビューを使用するかを知っておくことが重要です。たとえば、テキストフィールドなど、ユーザからのテキスト入力を収集するために使用するビューの種類は、ラベルのような静的テキストを表示するために使用するものとは異なります。描画に UIKit のビューを使用するアプリは、すぐに基本的なインタフェースを組み立てることができるので、簡単に作成できます。 UIKit のビュー・オブジェクトは、UIView クラスまたはそのサブクラスのインスタンスです。 UIKit フレームワークは、ビューの多くの種類を、データを与え、整理するのを助けるために提供します。


各ビューは、独自の特定の関数がありますが、UIKit のビューは、これらの一般的なカテゴリに分類することができます。


View カテゴリー目的View の例
views_content_2x
コンテンツ
画像やテキスト等の特定のタイプを表示イメージビュー、ラベル
views_collections_2x
コレクション
ビューのコレクションやグループを表示コレクションビュー、テーブルビュー
views_controls_2x
コントロール
アクションの実行、情報の表示ボタン、スライダー、スイッチ
views_bars_2x
バー
ナビゲート、アクションの実行ツールバー、ナビゲーションバー、タブバー
views_input_2x
インプット
ユーザのテキスト入力を受信検索バー、テキストビュー
views_containers_2x
コンテナ
他ビューのコンテナとして機能ビュー、スクロールビュー
モーダルユーザーが何かのアクションを実行できるようにアプリの普通のフローを妨害アクションシート、アラートビュー

Interface Builder を使用するとグラフィカルにビューを組み立てることができます。Interface Builder は、あなたのインターフェイスを構築する必要がある標準ビュー、コントロール、およびその他のオブジェクトのライブラリを提供します。ライブラリからこれらのオブジェクトをドラッグした後は、キャンバスにドロップして、好きなようにそれらを配置します。次に、ストーリーボードにそれらを保存する前に、これらのオブジェクトを構成するためにインスペクターを使用します。コードを書いて、ビルドし、アプリを実行する必要がなく、すぐに結果を参照できます。


UIKit フレームワークは、コンテンツの多くの型を提示するための標準的なビューを提供していますが、UIView (またはその子孫) をサブクラス化することで、独自のカスタムビューを定義することもできます。カスタムビューは、描画やイベント処理タスクを自分ですべて処理する事の出来る UIView のサブクラスです。これらのチュートリアルではカスタムビューを使用していませんが、「カスタムビューの定義」 でカスタムビューの実装の詳細を学ぶことができます。


ビューのレイアウトにストーリーボードを使用


グラフィック環境でビューの階層のレイアウトをストーリーボードを使用しています。ストーリーボードは、ビューと連携して、インターフェイスをビルドするために、直接、視覚的な方法を提供します。


チュートリアル:基本 で見たように、ストーリーボードはシーンで構成され、各シーンは、関連するビュー階層を持っています。オブジェクトライブラリの外にビューをドラッグして、ストーリーボードのシーンに配置すると、そのシーンのビュー階層に自動的に追加されます。その階層内のビューの位置は、あなたがそれを置く場所によって決定されます。あなたのシーンにビューを追加したら、サイズ変更、操作、設定、そしてキャンバスに移動することができます。


キャンバスはまた、インターフェイスの中のオブジェクトの外観図を示します。キャンバスの左側に表示される、アウトラインビュー で、ストーリーボード内のオブジェクトの階層表現を参照できるようになります。


storyboard_components_outline_view_2x


ストーリーボードシーンでグラフィカルに作成するビュー階層は、効果的な Objective-C のオブジェクトのセットです。実行時には、これらのオブジェクトは解凍されます。その結果、ユーティリティエリアに様々なインスペクタを使用して視覚的に設定したプロパティを使用して構成された、関連するクラスのインスタンスの階層が手に入ります。


チュートリアル:基本 で学んだように、ストーリーボードで作業したデフォルトのインターフェイスの設定は、インターフェイスのすべてのバージョンに適用されます。特定のデバイスのサイズや向きのためにあなたのインターフェイスを調整する必要があるときは、特定のサイズクラスに変更を加えて下さい。サイズクラス は、iPhone のポートレイト位置や iPad のランドスケープの位置などの表示環境で利用可能な水平方向または垂直方向のスペースを記述するためのハイレベルな方法です。サイズクラスには2つの型があります:レギュラーとコンパクトです。表示環境は、サイズクラスのペア、水平方向のスペースを記述するものと垂直のスペースを記述するものを特徴としています。キャンバス上のサイズクラス・コントロールを使用して、レギュラーとコンパクトのサイズクラスの異なる組み合わせでインターフェイスを見て編集することができます。


SC_H_size_button_any_any_2x


このチュートリアルでは特定のサイズクラスは使用していませんが、サイズクラスについて興味があれば、サイズクラスのデザインヘルプでそれらについての詳細を学ぶことはありません。

インスペクタでビューを構成


インスペクタペイン は、オブジェクトライブラリ上のユーティリティ領域に表示されます。


storyboard_components_inspectors_2x


インスペクタのそれぞれは、インターフェイス内の要素の重要な構成オプションを提供しています。ストーリーボード内のビューなどのオブジェクトを選択すると、そのオブジェクトのそれぞれのプロパティをカスタマイズするためにインスペクタを使用することができます。


さあ、最初のチュートリアルで属性インスペクタでの作業を開始しました。ストーリーボード内のビューやその他のオブジェクトを設定するのに、チュートリアルの残りの部分を通じてこれらのインスペクタを引き続き使用します。具体的には、ビューを設定するには、アトリビュートインスペクタを使い、ビューとビューコントローラの接続を作成するにはコネクション・インスペクタと、ビューコントローラを設定するにはアイデンティティ・インスペクタを使用して下さい。


ビューの位置に自動レイアウトを使用


ストーリーボードにビューを配置し始めると、さまざまな状況を考慮する必要があります。iOS アプリは、様々な画面サイズ、向き、および言語で、多くの異なるデバイス上で実行します。画面サイズの変更、デバイスの向き、ローカリゼーション、およびメトリックスにシームレスに応答する動的なインターフェースを必要としています。


すでに チュートリアル:基本 で見たように、Xcode は汎用性の高い、適応するインターフェイスを作成するための自動レイアウトと呼ばれるツールを提供しています。自動レイアウト は、ビュー間の関係を表現するためのシステムです。それで、個々のビューの制約の観点またはビューのセット間のこれらの関係を定義することができます。


storyboard_components_auto_layout_2x


キャンバス上のビューに制約の様々な型を追加してレイアウトの問題を解決し、リサイズ動作の制約を決定するために、キャンバスの右下の領域にある自動レイアウトのアイコンを使用してください。


ToDoList のアプリで作成しているシンプルなインターフェイスでは、この時点で自動レイアウトについてのすべてを学ぶ必要はありません。アプリのインターフェイスのレイアウトがより複雑になると、インターフェイスが、異なるデバイスと方向でレイアウトする方法を正確に指定する様々な制約を追加するでしょう。この文書の最後に、あなたがより複雑に適応するインタフェースを定義するために制約を使用するのに役立つ自動レイアウトガイドへのリンクがあります。






前の章:コンセプトの定義

次の章:インタラクションの定義
目次
Xcode の新機能