刚刚发现 iPad 的视频输出不是系统级功能,而是需要明确地内置到每个应用程序中。有没有人有这方面的经验,谁能指出我的示例代码?第二个问题是:Apple 为什么不将其作为系统功能。在将其构建到我的应用程序中时,我应该注意硬件问题吗?
4 回答
iPad 可以通过一组支持的电缆连接到外部显示器。连接后,应用程序可以使用关联的屏幕来显示内容。可以通过 UIKit 框架的接口访问有关屏幕的信息,包括其支持的分辨率。您还可以使用该框架将应用程序的窗口与一个屏幕或另一个屏幕相关联。
UIScreen 类支持检索所有可用屏幕(包括设备的主屏幕)的屏幕对象。每个屏幕对象都包含有关屏幕本身属性的信息,包括正确考虑屏幕大小和像素纵横比的尺寸。
UIScreenMode 类提供有关屏幕的一种特定大小和像素纵横比设置的信息。
现在可以将窗口(由 UIWindow 类表示)分配给特定的屏幕。
抱歉,我似乎没有必要的资格来评论其他帖子。因此,这里有一些代码可能有助于探索新的外部显示器支持:
NSUInteger numScreens = [[UIScreen screens] count];
DLog(@"[[UIScreen screens] count] = %d", numScreens);
NSUInteger j = 0;
for (UIScreen *screen in [UIScreen screens])
{
DLog(@" screen %d", j++);
NSArray *modes = [screen availableModes];
for (int i = 0; i < [modes count]; ++i)
{
UIScreenMode *mode = [modes objectAtIndex:i];
DLog(@" modes[%d] : size = (%f, %f) ; aspect ration = %f", i, mode.size.width, mode.size.height, mode.pixelAspectRatio);
}
}
请注意,您仍然需要某种视频电缆。我已经用 Apple 的分量 AV 电缆对此进行了测试。虽然很笨拙,但这对调试很有利,因为它有 USB 和 30 针连接器,因此您可以连接到 iPhone/iPad并在调试器中运行您的应用程序。
问题是您仍然需要做一些工作来将部分显示器镜像到外部屏幕,同时保留 iPhone/iPad 上的控件。您可能想查看此链接文本以获取灵感。
TVOutManager 类处理整个过程。
这个讨论现在不那么相关了,因为在当前版本的 iOS 中,现在在系统级别支持显示镜像。