3

我的应用程序支持 HDMI 输出。

我询问了电视分辨率的代码,得到了 1920 x 1080 像素

externalScreen.bounds

好的,一切都很好。我已经设置了我的视图并在电视上尝试了它......

但是:尽管电视被正确检测为 1920 x 1080 并且我的视图也设置正确,但屏幕底部/顶部/侧面有黑条?

为什么格式不对?

PS 当我镜像主屏​​幕时,它也显示了条,当我用 Youtube App 观看视频时,黑条消失了?

感谢您的帮助!

更新:

好的,虽然我在控制台中得到了这个输出:

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 x 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 回答
1

最适合大多数电视的设置是:

externalScreen.overscanCompensation = UIScreenOverscanCompensationInsetBounds | UIScreenOverscanCompensationInsetApplicationFrame; // this is the same as setting it to 3

仅将其设置为 UIScreenOverscanCompensationInsetApplicationFrame 可能会导致 UIWindow 内容未对齐。

于 2013-08-27T17:04:06.010 回答