6

我已经为此苦苦挣扎了一段时间。

众所周知,Lightning HDMI 适配器不支持 1080p 输出,当涉及使用连接显示器作为第二个屏幕的应用程序时(达到 1080p 的唯一方法是视频流,但不幸的是不是我的情况)。

最大输出分辨率为 1600x900,这在我的情况下可能很好,但我绝对需要摆脱窗口周围的“黑框”,我不知道该怎么做。我能够做到这一点的唯一方法是在电视菜单中手动拉伸电视输出图像,但正如您可能想象的那样,这对于我的最终产品来说不是一个可行的解决方案。

我试过了

secondScreen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame | UIScreenOverscanCompensationInsetBounds;

没有运气:我的问题不是“过扫描”,是“欠扫描”,如果适配器说 1600x900 是最高的,恐怕操作系统无法知道电视的高分辨率。

如果我将 MacBookPro 连接到同一台电视并在显示器设置中强制设置为 1600x900,则整个屏幕会以某种方式正确调整大小以覆盖电视的整个物理区域,但清晰度较低且没有黑框。我想知道在 iOS 生态系统中是否有类似的选项。

我也试过用这样的东西强制输出到 720p

for (UIScreenMode* mode in secondScreen.availableModes) {
        NSLog(@"%f %f",mode.size.width,mode.size.height);
        if (mode.size.height == 720) {
            secondScreen.currentMode = mode;
        }
    }

因为您无法手动创建 UIScreenMode,但它仍在使用 1600x900。而且一切都很难调试,因为闪电适配器没有数据连接(仅充电),所以我根本无法使用 XCODE 调试......

我也尝试过使用 AirPlay 和 VGA 适配器,1080p 就像一个魅力,但由于各种原因我需要使用 HDMI。不幸的是,iOS8 没有解决这个问题

有没有人有一个真正的好主意建议?谢谢你们。

更新 1:

我还发现,当您连接支持 1080p 但没有(例如)HDMI 输入的旧显示器/电视时,VGA 适配器可能会给您带来麻烦(我知道它与 VGA 无关,我只是想解释一下即使提供 1920x1080 分辨率,这台显示器也有多旧。这是客户展台上的 SHARP 等离子电视,不知道合适的型号)。

当使用 VGA 适配器连接到 iPad Air 时,输出为 1024x768,并且控制台注销了类似“无法识别屏幕 UUID”的信息。我也尝试过使用 HDMI 电缆(因为显示器没有 HDMI 输入,我不得不在显示器端使用 HDMI -> DVI 适配器),但我得到的只是通常的 1600x900。

但是,我能够解决问题,但我仍然无法解释为什么会这样:我将 Lightning-to-HDMI 适配器插入 ipad,然后我连接了 HDMI-to-VGA 适配器(与 Apple 完全无关) ,然后用一根 VGA 长线连接到显示器。1920x1080 像魅力一样。

这不应该是可能的(我通过 HDMI/闪电适配器以某种方式获得了全高清分辨率,它最多只能输出 1600x900),但它确实有效,如果你真的像我一样遇到麻烦,试试看。

另外,请注意,结果会因不同的电视/显示器/屏幕而异。那是完全不可靠的。

4

1 回答 1

4

如果您想摆脱欠扫描/边框,那么我建议您缩放过扫描补偿,如下面的代码所示。我已经使用闪电到 hdmi 电缆对其进行了测试,它在没有边框的外部显示器上运行良好。希望这可以帮助。干杯

示例代码:

if UIScreen.screens.count > 1 {
            let secondScreen = UIScreen.screens[1]
            secondScreen.overscanCompensation =  UIScreenOverscanCompensation(rawValue: UIScreenOverscanCompensation.scale.rawValue.advanced(by: 2))! 
            secondWindow = UIWindow(frame: secondScreen.bounds)
            secondWindow?.screen = secondScreen
            secondWindow?.isHidden = false
}
于 2017-10-09T12:39:10.223 回答