我已经挣扎了一段时间。
众所周知,Lightning HDMI适配器在使用连接显示器作为第二屏幕的应用时不支持1080p输出(达到1080p的唯一方法是视频流,但不幸的是不是我的情况)
最大输出分辨率是1600x900,这在我的情况下可能会很好,但我绝对需要摆脱"黑框"在我的窗户周围,我无法弄清楚如何做到这一点。我能够做到这一点的唯一方法是在电视菜单中手动拉伸电视输出图像,但您可能想象的不是我最终产品的可行解决方案。
我已经尝试了
secondScreen.overscanCompensation = UIScreenOverscanCompensationInsetApplicationFrame | UIScreenOverscanCompensationInsetBounds;
没有运气:我的问题不是"过度扫描",是" undercan"如果适配器说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适配器),但所有我&#39通常是1600x900。
然而,我能够解决问题,但我仍然无法解释为什么这有效: 我在ipad中插入了闪电到HDMI的适配器,然后我连接了一个HDMI-to-VGA适配器(完全不与Apple相关),然后用VGA长电缆连接到显示器。 1920x1080就像一个魅力。
这不可能(我通过HDMI /闪电适配器以某种方式获得全高清分辨率,最多只能输出1600x900),但它确实有效,如果你是真的像我一样陷入困境。
另请注意,结果会因电视/显示器/屏幕的不同而异。这完全不可靠。
答案 0 :(得分:3)
如果你试图摆脱欠扫描/边界,那么我建议你缩放过扫描补偿,如下面的代码所示。我使用闪电测试它测试它在没有边框的外部显示器上运行良好。希望这可以帮助。欢呼声
示例代码:
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
}