...

iOSマルチディスプレイプログラミングガイド

by user

on
Category: Documents
133

views

Report

Comments

Transcript

iOSマルチディスプレイプログラミングガイド
iOS
マルチディスプレイ
プログラミングガイド
目次
ウインドウの機能を使ったマルチディスプレイ表示について 4
初めに 4
ウインドウにはアプリケーションにとって重要な機能がある 4
外付けディスプレイに対応するためには別にウインドウが必要である 4
関連項目 5
ウインドウと画面について 6
iOSアプリケーションにおけるウインドウの役割 6
ウインドウのルートビューはアプリケーションが何かを表示する「場」である 6
キーウインドウは所定のイベントを受け取る 7
アプリケーションウインドウの多くは同じレベルである 7
ウインドウはある特定のデバイスディスプレイに対応づけられる 8
ウインドウ通知機能を使って状態変化を監視できる 8
ウインドウや画面にはほかにも若干の処理を行う 9
Xcodeやストーリーボードを使って、ウインドウを生成、設定、ロードできる 9
外付けディスプレイにコンテンツを表示する方法 11
外付けディスプレイの有無を調べて新規ウインドウを生成する 12
接続/切断の通知を登録する 13
接続/切断の通知に応答する 14
必要に応じて外付けディスプレイの属性を調整する 15
書類の改訂履歴 17
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
2
リスト
外付けディスプレイにコンテンツを表示する方法 11
リスト 2-1
リスト 2-2
リスト 2-3
外付けディスプレイの有無を調べるコード例 12
ディスプレイの接続/切断時に通知が届くよう登録するコード例 13
画面の接続/切断通知の処理 14
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
3
ウインドウの機能を使ったマルチディスプレ
イ表示について
iOSアプリケーションには「ウインドウ」というものが必ずあって、ユーザインターフェイスの表示
を担っています。ウインドウには重要な機能がありますが、アプリケーションが直接アクセスする必
要はほとんどありません。一般に、ウインドウを意識する必要があるのは、外付けディスプレイ対応
アプリケーションに限ります。
初めに
iOSでは、ウインドウオブジェクトはアプリケーションのビューを収容し、ディスプレイ表示を管理
しています。ウインドウに対応する画面オブジェクトは、現在表示対象としているデバイスディスプ
レイを表します。外付けディスプレイ対応アプリケーションは、別にウインドウオブジェクトを生成
して、その表示を管理するようになっています。
ウインドウにはアプリケーションにとって重要な機能がある
ウインドウには、アプリケーションの表示内容を収容するほか、タッチイベントをビューに配送す
る、向きの変化に応答する、などの機能があります。対応する画面オブジェクトは、現在表示対象と
しているデバイスディスプレイに関する情報を管理します。ストーリーボードでユーザインターフェ
イスを定義すれば、自動的にメインストーリーボードに、デバイスへの内容表示を管理するウインド
ウが設定されます。
関連する章: “ウインドウと画面について” (6 ページ)
外付けディスプレイに対応するためには別にウインドウが必要である
アプリケーションを外付けディスプレイに対応させるためには、その表示内容を表すウインドウオブ
ジェクトを別に生成しなければなりません。どちらのディスプレイにも同じ内容を表示する(ミラー
化 、デフォルトの動作)ほか、それぞれ異なる内容を表示することも可能です。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
4
ウインドウの機能を使ったマルチディスプレイ表示について
関連項目
関連する章: “外付けディスプレイにコンテンツを表示する方法” (11 ページ)
関連項目
『iOSAppProgrammingGuide 』は、iOSアプリケーションの基本的なアーキテクチャを解説し、優れた
アプリケーションを開発するためのコーディングガイドラインやベストプラクティスをまとめた資料
です。
『AirPlayOverview 』では、AirPlay互換メディアをiOSベースのデバイスに接続する方法を解説していま
す。
『UIWindow Class Reference 』は、UIWindowクラスのプログラミングインターフェイスの解説です。
『UIScreen Class Reference 』は、UIScreenクラスのプログラミングインターフェイスの解説です。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
5
ウインドウと画面について
ウインドウはアプリケーションのユーザインターフェイス表示全般を処理します。ウインドウは、
ビュー(および所有するView Controller)と連携して、表示しているビュー階層とのやり取りやビュー
階層の変更を管理します。
アプリケーションにはウインドウが必ずあって、iOSベースのデバイスディスプレイに、ユーザイン
ターフェイスを表示する役割を担っています。デバイスに外部ディスプレイを接続する場合は、そこ
にも何かを表示できるよう、もうひとつウインドウを生成することも可能です。
iOSアプリケーションにおけるウインドウの役割
iOSアプリケーションにおけるウインドウの役割は、Macアプリケーションの場合とはまったく異なり
ます。iOSのウインドウに、タイトルバー、「閉じる」ボックスその他、目で見てウインドウと分か
るような装飾はありません。ユーザが意図的に、ウインドウを閉じたり移動したりすることはないの
です。さらに、新たな内容を表示する場合も、Macアプリケーションのように別のウインドウを開く
のではなく、ウインドウ内のビューを切り替えて行います。
ウインドウオブジェクト(UIWindowのインスタンス)には、次のように重要な役割があります。
●
●
●
アプリケーションが表示するべき内容を収容する。
タッチイベントをビューその他のアプリケーションオブジェクトに配送する際に、必要な処理を
行う。
デバイスの向きが変化したとき、ビューコントローラと連携して適切に処理する。
多くの場合、上記の機能のために、アプリケーション側では何もしなくても構いません。ストーリー
ボードでユーザインターフェイスを定義すれば、ウインドウオブジェクトを明示的に生成しなければ
ならないのは、外付けデバイスディスプレイが使えるようにしたい場合だけです。
ウインドウのルートビューはアプリケーションが何かを表示する「場」で
ある
ウインドウには「ルート」ビューコントローラオブジェクトが1つあります。アプリケーションが表
示する他のビューは、すべてこれに含まれます。ルートビューコントローラを1つに制限しているた
め、インターフェイスの切り替え処理は単純です。新たなコンテンツの表示は、ルートビューコント
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
6
ウインドウと画面について
iOSアプリケーションにおけるウインドウの役割
ローラを置き換えるだけで済むからです。ルートビューをウインドウに組み込むには、ストーリー
ボードを使ってユーザインターフェイスを定義するのが最も簡単です(その手順は“Xcodeやストー
リーボードを使って、ウインドウを生成、設定、ロードできる” (9 ページ)を参照)。
ウインドウのルートビューコントローラには、いずれのビューコントローラでも使用できます。ルー
トビューコントローラは、インターフェイス設計により、汎用のUIViewControllerオブジェクト
(いくつかのビューのコンテナとして動作)、UIKit標準のビューコントローラ、アプリケーション側
で定義するカスタムビューコントローラのいずれかになります。ルートビューコントローラとしてよ
く使われるUIKit標準のオブジェクトとしては、ナビゲーション、タブバー、スプリットなどのビュー
コントローラがあります。
ルートビューコントローラを設定すると、ウインドウはルートビューコントローラのビューをウイン
ドウに追加し、サイズを適切に設定します。ウインドウは、ステータスバーの表示の有無、デバイス
の向き、全画面表示するか否かなど、さまざまな事項を勘案してビューの適切なサイズを決めます。
キーウインドウは所定のイベントを受け取る
キーウインドウとは、キーボードイベントや、タッチ操作に関係ないイベントが配送される設定に
なっているウインドウのことです。タッチイベントがタッチされたウインドウに配送されるのに対
し、座標値が関連付けられていないイベントは、キーウインドウに配送されます。同時に複数のウイ
ンドウがキーになることはありません。
ほとんどの時点で、アプリケーションウインドウがキーウインドウになります。iOSの場合、警告
ビューや入力アクセサリビューは独立したウインドウに表示するようになっており、これもキーウイ
ンドウになることがあります。たとえば、警告ビューや入力アクセサリビューにテキストフィールド
があり、ユーザがそこにキー入力している間は、このビューが属するウインドウがキーとなります。
アプリケーションウインドウの多くは同じレベルである
アプリケーション用のウインドウを生成すると、UIWindowクラスは自動的に、これを標準ウインド
ウレベル にします。アプリケーションがコンテンツを表示するウインドウとして適したレベルです。
レベルはwindowLevelプロパティで設定でき、他のウインドウとの前後関係(手前/奥)を表します。
レベルを設定し直すこともできなくはありませんが、通常その必要はありません。
アプリケーションがコンテンツを表示するウインドウに加え、常に前面に浮動表示したい場合に使
う、より高いレベルのウインドウがあります。システムステータスバーや警告がこれに当たります。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
7
ウインドウと画面について
iOSアプリケーションにおけるウインドウの役割
ウインドウはある特定のデバイスディスプレイに対応づけられる
UIWindowクラスのscreenプロパティは、当該ウインドウが表示されている、特定のデバイスディス
プレイを表します。その値は画面オブジェクト、すなわちUIScreenのインスタンスで、画面全体(境
界矩形)の大きさ、モード、輝度など、デバイスディスプレイに関する情報を管理します。
また、デバイスディスプレイの状態を監視し、変化があれば通知する機能もあります。たとえば、デ
バイスディスプレイの接続や切断、モードや輝度の変更があったとき、通知が送られるよう登録して
おくことができるのです。
ウインドウ通知機能を使って状態変化を監視できる
iOSには、ウインドウや画面オブジェクトの状態変化を表す通知が、いくつか定義されています。一
般にこの通知は、アプリケーションが外付けディスプレイに対応する場合に最も有用です。
キーボードが可視になったことを表す通知(UIKeyboardDidShowNotificationなど)のほかに、
UIWindowには次の通知が定義されています。
●
UIWindowDidBecomeVisibleNotification
●
UIWindowDidBecomeHiddenNotification
●
UIWindowDidBecomeKeyNotification
●
UIWindowDidResignKeyNotification
UIWindowの通知は、アプリケーションウインドウの状態をプログラムで変更したときにも配送され
ます。たとえば、ウインドウの表示/非表示を切り替えたときの通知は、
UIWindowDidBecomeVisibleNotificationまたはUIWindowDidBecomeHiddenNotificationです。
ただし、アプリケーションがバックグラウンド状態であれば、通知は配送されません。ウインドウは
見えていませんが、アプリケーション側はそのまま画面上に現れているとして処理するのです。
多くの場合、UIWindowDidBecomeVisibleNotification通知や
UIWindowDidBecomeHiddenNotification通知は気にかけなくても構いません。複数のウインドウを
使うことは稀だからです。
UIWindowDidBecomeKeyNotification通知やUIWindowDidResignKeyNotification通知を追跡する
と、アプリケーションウインドウがキーであるかどうかを把握できます。入力アクセサリビューを表
示してユーザに入力させる場合、ウインドウがキーかどうかを認識して処理する必要があるかもしれ
ません。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
8
ウインドウと画面について
Xcodeやストーリーボードを使って、ウインドウを生成、設定、ロードできる
ウインドウや画面にはほかにも若干の処理を行う
一般に、外付けデバイスディスプレイに対応する場合を除き、アプリケーションがウインドウオブ
ジェクトや画面オブジェクトにアクセスする必要はありません。アプリケーションの起動処理(ウイ
ンドウを生成、ロード、設定)後、ウインドウを利用して行うべきことは、次の2つだけです。
●
●
ウインドウを使用して、点および矩形をウインドウのローカル座標系に変換したり、その逆を行
います。たとえば、ウインドウの座標で値が与えられている場合は、その値を使用する前に特定
のビューの座標系に変換できます。座標を変換する方法については、「ビュー階層での座標の変換」
in View Programming Guide for iOS を参照してください。
ウインドウの通知を使用して、ウインドウに関連する変更を追跡します。ウインドウは表示と非
表示が切り替わったときや、キーウインドウになったとき、またはキーウインドウでなくなった
ときに通知を生成します。これらの通知を使用して、アプリケーションの別の部分で操作を実行
できます。詳しくは、“ウインドウ通知機能を使って状態変化を監視できる” (8 ページ)を参
照してください。
同様に、画面オブジェクトにアクセスしなければならない状況も限られています。ひとつは、ホスト
デバイスのディスプレイの輝度を調整したい場合です。iOSベースのデバイスでは、brightnessプロ
パティを使って、輝度をユーザが調整する仕組みを実装できます。さらにwantsSoftwareDimmingプ
ロパティを使うと、デバイスの最低輝度よりもさらに暗くする旨を指定できます。ただしこれはソフ
トウェアで実現しているので、wantsSoftwareDimmingをオンにすると処理性能を損なう虞がありま
す。
最後に、UIScreenのdisplayLinkWithTarget:selector:メソッドを使って、「Core Animation」
ディスプレイリンクオブジェクトを生成し、ディスプレイのリフレッシュレートに描画を同期させた
い場合がありえます。ディスプレイリンクオブジェクトを使ってアニメーションループを設定する方
法については、「Rendering Using an Animation Loop」 in OpenGL ES Programming Guide for iOS を参照して
ください。なお、GLKitのAPIを使って、自動的にディスプレイリンクを設定できます。GLKitフレーム
ワークについて詳しくは、『GLKit Framework Reference 』を参照してください。
Xcodeやストーリーボードを使って、ウインドウを生成、設
定、ロードできる
いずれかのXcodeテンプレートをもとに新規iOSアプリケーションプロジェクトを作成し、ストーリー
ボードでユーザインターフェイスを設計した場合、明示的にウインドウを生成、設定、ロードする必
要はありません。
あるアプリケーション用にメインストーリーボードファイルを作成し、情報プロパティリストファイル
でその旨を指定しておけば、iOSは起動の際に次のような処理を行います。
●
ウインドウのインスタンスを生成する。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
9
ウインドウと画面について
Xcodeやストーリーボードを使って、ウインドウを生成、設定、ロードできる
メインストーリーボードをロードし、当初用いるビューコントローラのインスタンスを生成す
る。
●
このビューコントローラをウインドウのrootViewControllerプロパティに設定し、ウインドウ
を表示する。
●
最初のビューコントローラを表示する前に、アプリケーションデリゲートを呼び出すようになってい
るので、ここでビューコントローラの設定をしてください。
ユーザインターフェイスの設計には、できるだけストーリーボードを使ってください(ただしストー
リーボードはiOS 5.0以降で使用可能)。代わりにnibファイルでUIを定義する場合も、おそらくウイン
ドウオブジェクトを明示的に生成する必要はありません。多くのXcodeテンプレートに、初めからそ
の処理が組み込まれているからです(ウインドウオブジェクトをInterface Builderファイルにドラッグ
する場合、その「Full Screen at Launch」属性をオンにしてください。ターゲットデバイスに合わせ
て、適切にウインドウの大きさを調整するようになります)。
ストーリーボードではなくnibファイルでUIを定義する場合、メインnibファイルの内容を、起動時に
ウインドウに取り込む必要があります。これは、application:willFinishLaunchingWithOptions:
メソッドに次のようなコードを記述して実現します。
window.rootViewController = myViewController;
稀に、ウインドウをプログラムで生成したい場合もあります。これは次のコード例のように、ウイン
ドウを生成し、ルートビューコントローラを組み込み、ウインドウを可視にする、という手順で行い
ます。
- (BOOL)application:(UIApplication *)application
willFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]
bounds]];
myViewController = [[MyViewController alloc] init];
window.rootViewController = myViewController;
[window makeKeyAndVisible];
return YES;
}
Important: ウインドウをプログラムで生成する場合、その大きさは、画面オブジェクトの境界矩
形と同じに設定してください。ステータスバーなどを考慮して小さくする必要はありません。View
Controllerを使用している場合は、View Controllerがビューのサイズを自動的に変更します。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
10
外付けディスプレイにコンテンツを表示する
方法
AirPlayを使ってコンテンツの表示を外付けデバイスディスプレイにリダイレクトする場合、主ディス
プレイと同じ内容を表示する方法(ミラー化)と、別の内容を表示する方法があります。
注意: ミラー化だけであれば、特に何もする必要はありません。iOS 5.0以降、外付けディス
プレイにも同じ内容を表示するのであれば、ユーザがAirPlayビデオ出力デバイスを選択する
だけでできてしまいます。
各ディスプレイの表示を使い分けることにより、使いやすさを向上できます。たとえば、アプリケー
ションのUIをホストデバイス側に表示し、同時に外付けディスプレイに高精細メディアコンテンツを
表示する、というような使い方です。
外付けデバイスディスプレイに異なる表示をする手順は次の通りです。
1.
アプリケーションの起動時に外付けディスプレイの有無を確認し、画面の接続/切断時に通知が届
くよう登録する。
2.
外付けディスプレイがある場合(起動時、実行中とも)、これに対応するウインドウを生成、設
定する。
3.
ウインドウを適切な画面オブジェクトに関連づけ、第2のウインドウを表示し、通常どおり更新
する。
それぞれ異なる内容を表示するようにした後、再びミラー化を有効にしたい場合は、生成した第2の
ウインドウを該当する画面オブジェクトから削除してください。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
11
外付けディスプレイにコンテンツを表示する方法
外付けディスプレイの有無を調べて新規ウインドウを生成する
Important: アプリケーションがステータスバーの向きを正しく設定するように注意してくださ
い。外付けディスプレイでは、ホストデバイスの加速度計を読み取って向きを変えることができ
ず、アプリケーションが設定した、ステータスバーの向きに応じて決まります。
外付けディスプレイの有無を調べて新規ウインドウを生成す
る
アプリケーション起動時に、第2のディスプレイの有無を調べるため、ウインドウのUIScreenオブ
ジェクトのscreens配列を参照します。通常、screens配列には、画面オブジェクトが1つしかありま
せん。iOSベースのデバイス本体のディスプレイを表すものです。しかし外付けディスプレイを接続
すると、これを表す画面オブジェクトが配列に加わります。外付けディスプレイを接続できるiOSベー
スのデバイスとしては、Retinaディスプレイを備えたiPhoneやiPod touchデバイス、そしてiPadがあり
ます。iPhone 3GSなどの旧デバイスは対応していません。
リスト 2-1に、アプリケーション起動時に外付けディスプレイの有無を調べるメソッドの例を示しま
す。第2のディスプレイがあれば、対応するウインドウを生成するようになっています。
リスト 2-1
外付けディスプレイの有無を調べるコード例
- (void)checkForExistingScreenAndInitializeIfPresent
{
if ([[UIScreen screens] count] > 1)
{
// 外付けディスプレイを表す画面オブジェクトを取得する。
UIScreen *secondScreen = [[UIScreen screens] objectAtIndex:1];
// 画面の大きさを取得して、正しい大きさのウインドウを生成できるようにする。
CGRect screenBounds = secondScreen.bounds;
self.secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];
self.secondWindow.screen = secondScreen;
// 当初の表示内容を設定する...
// ウインドウを表示する。
self.secondWindow.hidden = NO;
}
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
12
外付けディスプレイにコンテンツを表示する方法
接続/切断の通知を登録する
}
Important: ウインドウを表示する前に、常に画面をウインドウに関連付ける必要があります。現
在表示しているウインドウの画面を変更することもできますが、この操作は負荷が大きいため避
けてください。
接続/切断の通知を登録する
ディスプレイが接続/切断されると、システムはそれに応じた通知をアプリケーションに送ります。
これは外付けディスプレイの状態に応じて適切に表示を切り替えるために重要です。通知に応じてア
プリケーションの状態を更新し、外部ディスプレイに対応するウインドウを生成または破棄しなけれ
ばならないのです。
重要なのは、バックグラウンド動作中であってもこの通知は送られてくることです。通知がいつ届く
か予測できないので、アプリケーションの動作中常に存在するオブジェクト(アプリケーションデリ
ゲートなど)に監視させるとよいでしょう。アプリケーションが一時停止中であれば通知はキューに
入ります。停止状態を脱し、フォアグラウンドまたはバックグラウンドで実行が再開した時点で、
キューから通知が配送されます。
リスト 2-2に、この通知を登録するコード例を示します(通知に応じた処理のコード例は“接続/切断
の通知に応答する” (14 ページ)を参照)。
リスト 2-2
ディスプレイの接続/切断時に通知が届くよう登録するコード例
- (void)setUpScreenConnectionNotificationHandlers
{
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(handleScreenDidConnectNotification:)
name:UIScreenDidConnectNotification object:nil];
[center addObserver:self
selector:@selector(handleScreenDidDisconnectNotification:)
name:UIScreenDidDisconnectNotification object:nil];
}
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
13
外付けディスプレイにコンテンツを表示する方法
接続/切断の通知に応答する
接続/切断の通知に応答する
カスタム通知ハンドラは通知オブジェクトとして、外付けディスプレイを表す画面オブジェクトを受
け取ります。起動時と同様に、新しい画面の大きさを調べ、正しい大きさのウインドウを生成、初期
化する必要があります。次に、ウインドウのscreenプロパティに新しい画面オブジェクト、hidden
プロパティにNOを設定します(リスト 2-3を参照)。
リスト 2-3
画面の接続/切断通知の処理
- (void)handleScreenDidConnectNotification:(NSNotification*)aNotification
{
UIScreen *newScreen = [aNotification object];
CGRect screenBounds = newScreen.bounds;
if (!self.secondWindow)
{
self.secondWindow = [[UIWindow alloc] initWithFrame:screenBounds];
self.secondWindow.screen = newScreen;
// ウインドウの初期UIを設定する。
}
}
- (void)handleScreenDidDisconnectNotification:(NSNotification*)aNotification
{
if (self.secondWindow)
{
// ウインドウを非表示にしてから削除する。
self.secondWindow.hidden = YES;
self.secondWindow = nil;
}
}
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
14
外付けディスプレイにコンテンツを表示する方法
必要に応じて外付けディスプレイの属性を調整する
注意: ディスプレイに対応するウインドウを生成しない、あるいは生成しても表示しない場
合、外付けディスプレイの画面は真っ黒になります。
必要に応じて外付けディスプレイの属性を調整する
多くのディスプレイは複数の解像度をサポートし、一部の解像度ではピクセルのアスペクト比が異な
る場合があります。UIScreenオブジェクトは通常、ディスプレイの推奨画面モードになります。で
きるだけこのモードのままで使うようにしてください。推奨画面モードは、UIScreenオブジェクト
のpreferredModeプロパティとして取得できます。
なお、画面モードにかかわらず、あるデバイスのリソースを使って別の画面の内容を生成するために
発生する性能上の問題には、アプリケーション側で対処する必要があります。たとえば、どちらの画
面にも、フレームの脱落や途切れを起こすことなくレンダリングできるよう、最適なフレームレート
を調べる必要が生じるかも知れません。
場合によっては、ディスプレイをウインドウに対応づける前に、その内容に応じてより適切な適切な
モードに切り替えたい場合もあるでしょう。たとえば、OpenGL ESを使用するゲームを実装している
ときに、テクスチャが640x480ピクセルの画面に合わせて設計されている場合、デフォルト解像度が
より高いディスプレイでは画面モードを変更できます。画面モードを切り替える場合、表示の大きさ
が変わっても使い勝手に問題がないか、よく検討してください。
デフォルト以外の画面モードの使用を計画している場合は、画面をウインドウに割り当てる前に、使
用するモードをUIScreenオブジェクトに適用する必要があります。UIScreenModeクラスは、単一の
画面モードの属性を定義します。画面オブジェクトでサポートされるモードのリストは、
availableModesプロパティから取得でき、リストから要求を満たすモードを選択できます。
注意: 外付けディスプレイがどのモードにも対応できるとは限らないので、特定のモードが
あることを前提にはしてはなりません。
画面モードの詳細については、『UIScreenMode Class Reference 』を参照してください。
UIScreenオブジェクトには画面モード以外にもoverscanCompensationというプロパティがあって、
外付けディスプレイのオーバースキャン補正が可能です。これはCRTディスプレイ向けに開発された
技術です。以前のCRTディスプレイは、技術的な制限のため、画像の端が欠けて表示されることがあ
りました。この制限は既に解決されましたが、多くの放送事業者やディスプレイ製造業者が、今なお
オーバースキャンを想定した対処をし続けています。overscanCompensationプロパティのデフォル
ト値であるUIScreenOverscanCompensationScaleにすると、iOSは、外付けディスプレイにオーバー
スキャンが起こっていることを検出したとき、表示の大きさを適切に調整するようになります。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
15
外付けディスプレイにコンテンツを表示する方法
必要に応じて外付けディスプレイの属性を調整する
ごく稀に、overscanCompensationプロパティを他の値にしたくなる場合もありますが、そうする
と、ほかにも作業が必要になります。たとえばUIScreenOverscanCompensationInsetBoundsを指
定した場合、標準以外の大きさのディスプレイに対応しなければなりません。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
16
書類の改訂履歴
この表は「iOSマルチディスプレイプログラミングガイド 」の改訂履歴です。
日付
メモ
2012-12-13
細かな訂正を行いました。
2012-09-19
iOSアプリケーションで、ウインドウオブジェクトや画面オブジェ
クトを使い、マルチディスプレイに対応する方法について説明した
新規ドキュメント。
2012-12-13 | © 2012 Apple Inc. All Rights Reserved.
17
Apple Inc.
© 2012 Apple Inc.
All rights reserved.
本書の一部あるいは全部を Apple Inc. から書
面による事前の許諾を得ることなく複写複製
(コピー)することを禁じます。また、製品
に付属のソフトウェアは同梱のソフトウェア
使用許諾契約書に記載の条件のもとでお使い
ください。書類を個人で使用する場合に限り
1 台のコンピュータに保管すること、またそ
の書類にアップルの著作権表示が含まれる限
り、個人的な利用を目的に書類を複製するこ
とを認めます。
Apple ロゴは、米国その他の国で登録された
Apple Inc. の商標です。
キーボードから入力可能な Apple ロゴについ
ても、これを Apple Inc. からの書面による事
前の許諾なしに商業的な目的で使用すると、
連邦および州の商標法および不正競争防止法
違反となる場合があります。
本書に記載されているテクノロジーに関して
は、明示または黙示を問わず、使用を許諾し
ません。 本書に記載されているテクノロジー
に関するすべての知的財産権は、Apple Inc.
が保有しています。 本書は、Apple ブランド
のコンピュータ用のアプリケーション開発に
使用を限定します。
本書には正確な情報を記載するように努めま
した。 ただし、誤植や制作上の誤記がないこ
とを保証するものではありません。
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
U.S.A.
Apple Japan
〒106-6140 東京都港区六本木 6
丁目10番1号 六本木ヒルズ
http://www.apple.com/jp
Apple, the Apple logo, AirPlay, iPad, iPhone, iPod,
iPod touch, Mac, and Xcode are trademarks of
Apple Inc., registered in the U.S. and other
countries.
Retina is a trademark of Apple Inc.
OpenGL is a registered trademark of Silicon
Graphics, Inc.
iOS is a trademark or registered trademark of
Cisco in the U.S. and other countries and is used
under license.
Apple Inc. は本書の内容を確認しておりますが、本
書に関して、明示的であるか黙示的であるかを問わ
ず、その品質、正確さ、市場性、または特定の目的
に対する適合性に関して何らかの保証または表明を
行うものではありません。その結果、本書は「現状
有姿のまま」提供され、本書の品質または正確さに
関連して発生するすべての損害は、購入者であるお
客様が負うものとします。
いかなる場合も、Apple Inc. は、本書の内容に含ま
れる瑕疵または不正確さによって生じる直接的、間
接的、特殊的、偶発的、または結果的損害に対する
賠償請求には一切応じません。そのような損害の可
能性があらかじめ指摘されている場合においても同
様です。
上記の損害に対する保証および救済は、口頭や書面
によるか、または明示的や黙示的であるかを問わ
ず、唯一のものであり、その他一切の保証にかわる
ものです。 Apple Inc. の販売店、代理店、または従
業員には、この保証に関する規定に何らかの変更、
拡張、または追加を加える権限は与えられていませ
ん。
一部の国や地域では、黙示あるいは偶発的または結
果的損害に対する賠償の免責または制限が認められ
ていないため、上記の制限や免責がお客様に適用さ
れない場合があります。 この保証はお客様に特定
の法的権利を与え、地域によってはその他の権利が
お客様に与えられる場合もあります。
Fly UP