Interface Builderは、ユーザインターフェイスの設計と、アプリケーションの各部分との関連付けを支援するアプリケーションです。Interface Builderには、UI設計のためのドラッグ&ドロップインターフェイスや、設計内で各種のオブジェクトのプロパティの表示と変更を行うためのインスペクタのほか、それらの間の接続機能が含まれています。
nibファイルとは?
Cocoaにおけるウインドウとメニュー
グラフィカルユーザインターフェイス付きのCocoaアプリケーションにはすべて、少なくとも1つのnibファイルがあります。メインのnibファイルは、アプリケーションの起動時に自動的に読み込まれます。このnibファイルには、メニューバーと、一般には少なくとも1つのウインドウと各種のオブジェクトが含まれています。それ以外のnibファイルを持つこともできます。各nibファイルには以下の要素が含まれています。
アーカイブされたオブジェクト。オブジェクト指向用語では「フラット化された」または「シリアル化された」オブジェクトともいいます。これはオブジェクトが、ディスクに保存でき(またはネットワーク接続経由で別のコンピュータに転送でき)、後でメモリに復元できる方法でエンコードされていることを意味します。アーカイブされたオブジェクトには、オブジェクトのサイズ、場所、オブジェクト階層内の位置などの情報が含まれています。アーカイブされたオブジェクトの階層の最上位にあるのはFile’s Ownerオブジェクトです。これは、nibファイルを所有する(通常はnibファイルをディスクから読み込む)実際のオブジェクを指す代理オブジェクトです。
イメージ。イメージファイルは、nibファイルウインドウや、イメージファイルを受け取ることができるオブジェクト(ボタンやイメージビュー)へドラッグできるファイルです。
クラスリファレンス。Interface Builderは、固定パレットに配置されるCocoaオブジェクトやほかのオブジェクトの詳細を格納できますが、コードにはアクセスできないため、カスタムクラスのインスタンスのアーカイブ方法を知りません。このようなクラスの場合、Interface Builderは代理オブジェクトを格納し、そこにカスタムクラス情報を添付します。
接続情報。クラス階層において、オブジェクト同士がどのように相互接続されているかについての情報。Interface Builder固有のコネクタオブジェクトがこの情報を格納します。ある文書を保存すると、そのコネクタオブジェクトが、接続されているオブジェクトとともにnibファイルにアーカイブされます。
ウインドウにはさまざまな性質があります。ウインドウは、オンスクリーンまたはオフスクリーンになることがあります。オンスクリーンウインドウは、ウインドウサーバが管理する階層で、スクリーン上で「レイヤ化」されます。典型的なCocoaウインドウには、タイトルバー、コンテンツ領域、いくつかのコントロールオブジェクトが含まれています。
オンスクリーンウインドウはステータスを持つことがあります。すなわち、キーまたはメインです。キーウインドウはアプリケーションのキー押下に応答し、メニューとパネルからのメッセージを第一に受信するウインドウです。通常、ウインドウはユーザがクリックするとキーウインドウになります。各アプリケーションは、1つのキーウインドウしか持つことはできません。
アプリケーションには1つのメインウインドウがあります。メインウインドウも、多くの場合はキーステータスを持つことができます。メインウインドウは、アプリケーションのユーザアクションの第一の焦点となるウインドウです。多くの場合、キーウインドウ(通常はフォントウインドウや情報ウインドウなどのパネル)でのユーザアクションは、メインウインドウに直接作用します。
標準ウインドウ以外の多くのユーザインターフェイスオブジェクトは、ウインドウです。メニュー、ポップアップリスト、プルダウンリストは、すべてさまざまな種類のユーティリティウインドウやダイアログであるため、根本的にはウインドウです。たとえば、アテンションダイアログ、情報ウインドウ、描画ウインドウ、ユーティリティウインドウ、ツールパレットなどです。実際に、スクリーン上で描画されるものはすべて、ウインドウに表示されなければなりません。しかしユーザは、それらをウインドウとして認識したり参照したりできない場合があります。
相互作用している2つのシステムが、Cocoaウインドウを作成、管理します。ウインドウは、ウインドウサーバによって作成されます。ウインドウサーバは、Quartz(下位レベルの描画システム)の内部のウインドウ管理部分を使用するプロセスであり、Quartzのグラフィックスルーチンを使ってウインドウの描画、サイズ変更、非表示、移動を行います。ウインドウサーバはまた、ユーザイベント(マウスクリックなど)を検出してそれらをアプリケーションに転送します。
ウインドウサーバが作成するウインドウは、Application Kitフレームワークによって提供されるオブジェクトと対になります。提供されるオブジェクトは、NSWindowクラスのインスタンスです。Cocoaプログラム内の物理的なウインドウはそれぞれ、NSWindowまたはそのサブクラスのインスタンスによって管理されます。Application Kitの詳細については、『Cocoa Fundamentals Guide』の「What Is Cocoa?」を参照してください。
NSWindowオブジェクトを作成すると、ウインドウサーバは、NSWindowオブジェクトが管理する物理的なウインドウを作成します。NSWindowクラスはインスタンスメソッドをいくつか提供しており、それを通じてオンスクリーンウインドウの操作をカスタマイズします。
実行中のCocoaアプリケーションでは、NSWindowオブジェクトは、NSApplicationのインスタンスとそのアプリケーションのビューの中間的な位置を占めています(ビューは、自身の描画と、ユーザイベントの検出ができるオブジェクトです)。NSApplicationオブジェクトは、そのウインドウのリストを保持し、各ウインドウの現在のステータスを追跡します。一方、各NSWindowオブジェクトは、そのウインドウだけでなくビューの階層を管理します。
この階層の最上位は、ウインドウのコンテンツ矩形にちょうど収まる大きさのコンテンツビューです。コンテンツビューには、階層内でそれよりも下に位置する他のすべてのビュー(サブビュー)が含まれます。NSWindowオブジェクトは、階層内のビューにイベントを配布し、それらの間で座標変換を調整します。
もう1つの矩形であるフレーム矩形は、ウインドウの外側の境界を定義し、タイトルバーとウインドウの各種コントロールを含みます。Cocoaでは、Carbonアプリケーションとは異なり、フレーム矩形の左下角を基本座標系の原点として使用します。Carbonアプリケーションでは、左上角を原点として使用します。ビューは、この基本座標系から(相対的に)変換された座標系で自分自身を描画します。
Last updated: 2008-01-24