kkAyatakaのメモ帳。

誰かの役に立つかもしれない備忘録。

外部ディスプレイに表示

外部ディスプレイの使用はiOS Viewプログラミングガイドにその記述がある。手順は次の通り。

  1. UIScreenから外部ディスプレイのscreenオブジェクトを取得
  2. UIWindowを生成し初期化
  3. UIWindowのscreenプロパティに外部ディスプレイのscreenオブジェクトを設定
  4. 内部コンテンツ追加
  5. 表示

実際のアプリケーションでは外部ディスプレイの接続/解除を受け取る通知の登録等が必要になるが、表示するだけであれば、これらをコードに落としてやればよい。

プロジェクト作成時にデフォルトで用意されるウインドウと異なり、初期状態では背景が存在しない。背景が無い場合、再描画時に不都合があるので、UIWindowの背景を塗りつぶしたり、背景を塗りつぶしたUIViewを追加する必要がある。

if ([[UIScreen screens] count] > 1) {
    
    UIScreen *screen = [[UIScreen screens] objectAtIndex:1];
    UIWindow *window = [[UIWindow alloc] initWithFrame:[screen bounds]];
    
    window.screen = screen;
    
    UIView *view = [[UIView alloc] initWithFrame:[screen bounds]];
    view.backgroundColor = [UIColor whiteColor];
    [window addSubview:view];
    
    UILabel *label = [[UILabel alloc] init];
    label.text = @"2nd Screen";
    label.textAlignment = UITextAlignmentCenter;
    label.frame = [view frame];
    [view addSubview:label];
    
    window.hidden = NO;
}