3

私のアプリはHDMI出力をサポートしています。

テレビの解像度をコードに尋ねたところ、1920 x1080pxの

externalScreen.bounds

OK、すべて問題ありません。ビューを設定して、テレビで試してみました...

しかし:テレビは1920 x 1080として正しく検出され、ビューも正しく設定されていますが、画面の下部/上部/側面に黒いバーがありましたか?

フォーマットが間違っているのはなぜですか?

PSホーム画面をミラーリングすると、バーも表示されます。Youtubeアプリでビデオを見ると、黒いバーが消えますか?

ご協力ありがとうございました!

アップデート:

OK、コンソールでこの出力を取得しましたが、次のようになります。

A new screen got connected: <UIScreen: 0x3439a0; bounds = {{0, 0}, {1920, 1080}}; mode = <UIScreenMode: 0x345240; size = 1920.000000 x 1080.000000>>

...まだ黒いフレームが表示されます。CGRectMake(0.0f,0.0f,1920.0f,1080.0f)私はテスト目的で自分の見解を初期化します。

これは、画面に表示されるビューです(黒いバーに注意してください)。

ここに画像の説明を入力してください

4

3 に答える 3

4

アスペクト比が 16:9 に一致しないため (4:3 だと思います)、ホーム画面に黒いバーが表示されます。外部ディスプレイに関しては、メイン ビュー (画面全体に表示されるはずのビュー) のフレームを確認してください。おそらく1920×1080に設定されていません

編集: iPad から 1920 x 1080 ディスプレイに出力する必要があるプロジェクトにこのコードを使用しましたが、うまくいきました

- (void) screenDidConnect:(NSNotification *)aNotification
{
    NSLog(@"A new screen got connected: %@", [aNotification object]);
    //[self printScreenInfo];

    UIScreen* newScreen = [aNotification object];

    CGRect screenBounds = newScreen.bounds;

    if (!self.externalWindow)
    {
        self.externalWindow = [[UIWindow alloc] initWithFrame:screenBounds];

        self.externalWindow.screen = newScreen;
        self.externalViewController.view.frame = externalWindow.frame;

        [self.externalWindow addSubview:externalViewController.view];

        self.externalWindow.hidden = NO;
        // Set the initial UI for the window.
        // [externalViewController displaySelectionInSecondaryWindow:externalWindow];

    }
}
于 2012-05-18T13:47:29.837 に答える
1
externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame;
于 2012-05-19T11:00:45.393 に答える