ウインドウオブジェクト


ウィンドウオブジェクトは画面の矩形領域内のグラフィックコンテンツを表示し、イベントの配布に役割を果たしています。このオブジェクトは、AppKit フレームワークの NSWindow クラスか UIKit フレームワークの UIWindow から継承し、アプリケーション内のウィンドウを表示します。ウィンドウオブジェクト(または、単純にウインドウ) は基本的にビューのコンテナであり、それらのビューが行う描画やイベント処理に関連する主要な責任を負います。


ウインドウが描画を調整、イベント配布


ウィンドウは、他のビューを囲む、階層の最上位のビューで、ビューの階層のルートにあります。ウィンドウが、その内容を表示したら、それはそのスーパービューのコンテキスト内で自分自身を描画し、順番に各ビューを求め、この階層をたどってゆきます。階層の最上位にあるビューは、コンテンツビューです。コンテンツビューは、ウィンドウ内の他のすべてのビューの背景として、ウィンドウの描画領域全体を占めています。(UIWindow オブジェクトの場合、このコンテンツビューは、ウィンドウ自体です。)



訳注: ここにもアニメーションが貼付けてあるが、それを取り出す方法を思いつかなかったので、そのアニメーションを見たい場合にはオリジナルの Xcode を見て欲しい)



ウィンドウの座標系は基本座標系と呼ばれ、コンテンツを提示する役割に関連しています。ウィンドウ内のビューが行うすべての描画は、最終的には、基本座標系を参照しています。ただし、ウィンドウ自体は、画面独自の座標系を使用して画面上の配置と、サイズを決められています。ウィンドウ・クラスは、ビューのローカル座標系と基本座標系との間で変換するメソッドを定義します。


ウィンドウは、これらのイベントを受けとるのに最もふさわしいところである、その階層内のビューに着信イベントを配信します。マウスイベント、タッチイベント、そして同様のイベントの場合は、その受信者は、マウスポインタの下またはビューに触れた指の下にあるビューです。ターゲットのないキーイベントやアクションメッセージの場合、受信者は第一レスポンダ、つまり、最初にイベントまたはメッセージに応答する機会を与えられたオブジェクトです。ウィンドウは第一レスポンダの支配下にあります。


ココアタッチ(iOS) とココア(OS X) のウインドウは、これらの一般的な責任を共有していますが、異なる特性と動作があります。違いは異なるユーザー環境から発生し、つまり、デスクトップシステムに対して、限られた画面領域のハンドヘルドデバイスです。異なったユーザー環境は、また違った使用パターンおよび要求につながります。


OS X のウィンドウオブジェクト


NSWindow オブジェクトによって表されるウィンドウには、二つの主要な部分があります:フレーム領域とコンテンツビューです。プライベート・ビューで構成されているフレーム領域は、ウィンドウ全体の領域を囲み、ウィンドウの境界線を描き、タイトルバー、そして、クローズボタン、最小化ボタン、タイトルなどの項目をタイトルバーに描画します。また、右下隅のサイズ変更の三角形を含みます。コンテンツビューは、フレーム領域で囲まれた領域を占有し、ウィンドウのビューの階層のルートです。


OS X 上のウィンドウオブジェクトは、いくつかの異なる状態を持つことができます。


OS X のアプリケーションでは、複数のウィンドウを持てます。ドキュメントベースのアプリケーションでは、各文書には、独自のウィンドウがあります。アプリケーションのメインウィンドウ(または複数)に加えて、すべてのアプリケーションは、色の選択、アプリケーションの環境設定の設定などのようなアクションの二次ウィンドウやパネルを持っていることがあります。NSPanel オブジェクト (あるいは、単に、パネル) は、なんらかの方法でアプリケーションやドキュメントをサポートする二次ウィンドウを表します。それらは、キーウィンドウとなりますが、決してメインウィンドウとはならず、通常、アプリケーションが非アクティブになったら画面から削除されます。また、アプリケーションは、ユーザーがタスクを完了するまで、そのウィンドウへの入力を制限し、モーダルウィンドウを実行することができます。


ウィンドウはまた、オペレーティングシステムによって維持されるレベルおよび Z オーダーを有しています。レベルは、特定機能タイプのウインドウのサブセットです。たとえば、モーダルウィンドウをフローティングウィンドウの上に表示するように、レベル自体が階層的に配置されています。すべてのウィンドウには、現在画面上またはオフスクリーンにある、各ウィンドウのレベルに影響される特定の前から後ろへの順になっています。このリスト内のウィンドウの位置が、その Z オーダーです。


iOS のウィンドウオブジェクト


UIWindow オブジェクトは、(NSWindow オブジェクトと比較して) 限られた役割しか持たない特殊なビューです。iOS アプリケーションは、技術的に複数のウィンドウを持つことができますが、お互いの上に他のレイヤを重ねて、慣例的にそれらは単一のウィンドウに制限されています。ウィンドウは画面全体を占有し、タイトル、コントロール、またはその他の装飾を OS X のウインドウのように持っていないので、ユーザーは操作できません。起動時にアプリケーションはウィンドウを作成し、そのビューを追加する場合と、nib ファイルからウインドウとビューをロードする場合とがあります。ウィンドウを表示した後は、めったにそれを再び参照する必要はありません。


前提条件の記事


(なし)

関連記事

ビュー階層
座標系
ドローイング・モデル
ターゲット・アクション
レスポンダ・オブジェクト

既知のディスカッション


ウインドウプログラミングガイド

サンプルコードプロジェクト

RoundTransparentWindow



目次
Xcode の新機能

  • アニメーション
  • コア・アニメーションは力を与える
    アニメーション必要条件
    暗黙・明示にアニメーション
    Platform 毎の Core Animation 統合
  • アプリケーションオブジェクト
  • アプリ Object は外部 delegate に通知
    アプリはアプリオブジェクト持つ
  • コントロールオブジェクト
  • UIKitでActMessageがEventを決定
    AppKitでControlは複数のセルを持つ
  • 座標系
  • 座標系は異なる描画方向を持てる
    ウインドウとビューは独自座標系
  • ドローイングモデル
  • ビューは自分自身を描画
    グラフィックコンテクスト
    描画はビューローカル座標系で
  • イベント(iOS)
  • オブジェクトはビューに触れる指を表現
    タッチオブジェクトの配信は、定義された経路をたどる
    イベントを処理するために4つのメソッドをオーバーライド
    モーションイベントの処理
  • フォーマッタ
  • フォーマッタの設定と適用
    OSXでセルにフォーマッタを添付
  • メインイベントループ
  • アプリケーションオブジェクト取得
    コアオブジェクトはイベントに応答
  • アウトレット
  • ターゲットアクション
  • アクションメソッドは特定の形式
    ツールの使用でターゲット設定
    ターゲットアクションと OS
  • アンドゥ・マネージャー
  • 取り消しの操作はオブジェクトに
    取り消し操作はスタックに
    操作は取り消しグループに合体
    取り消しを要求する方法
    取消マネージャとレスポンダ
    取消を要求ユーザーインタフェース
  • ビュー階層
  • 表示プロパティは、階層の関係定義
    iOS ではウィンドウはビューです
  • ビュー・オブジェクト
  • ビューのの中核プロパティ
    ビューはアニメーションの本質
  • ストーリーボード
  • シーンは唯一のビュー·コントローラとそのビューに対応
    セグエが2つのシーン間の遷移を管理
  • ウインドウ・オブジェクト
  • ウインドウがイベント配布
    iOS のウィンドウオブジェクト
    OS X のウィンドウオブジェクト
  • ペーストボード
  • ペーストボードは多くの項目を保持
    ペーストボードの持続性
  • 環境設定
  • 各ユーザー設定はドメインに属する
    アプリは環境設定の選択を提示
    ユーザーデフォルト設定で OS X
  • レスポンダ・オブジェクト
  • ファーストレスポンダは最初に受信
    レスポンダチェーンと協調イベント















    トップへ














    トップへ














    トップへ