是否可以通过 VGA 连接器镜像屏幕?找不到任何关于此的内容。
3 回答
我一直在寻找和你一样的东西。上周末我写了一个小的 UIApplication 类别来添加镜像支持。我在 Google Code 上发布了代码。
http://code.google.com/p/iphoneos-screen-mirroring/
要使用它,您只需在应用程序委托的应用程序中进行设置即可完成启动。像这样:
[[UIApplication sharedApplication] setupScreenMirroringOfMainWindow:mainWindow framesPerSecond:20];
上周末我只有一次机会在带有 Apple AV 输出电缆的大屏幕电视上试用它。性能并不出色,因此我不建议使用高于 30 fps 的帧速率...
我认为值得补充的是QuartzCore框架是强制性的,否则在编译时会出现 4 个错误。
Undefined symbols:
"_CATransform3DMakeRotation", referenced from:
-[UIApplication(ScreenMirroring) updateMirroredWindowTransformForInterfaceOrientation:] in UIApplication+ScreenMirroring.o
-[UIApplication(ScreenMirroring) updateMirroredWindowTransformForInterfaceOrientation:] in UIApplication+ScreenMirroring.o
-[UIApplication(ScreenMirroring) updateMirroredWindowTransformForInterfaceOrientation:] in UIApplication+ScreenMirroring.o
"_kCAGravityResizeAspect", referenced from:
_kCAGravityResizeAspect$non_lazy_ptr in UIApplication+ScreenMirroring.o
(maybe you meant: _kCAGravityResizeAspect$non_lazy_ptr)
"_OBJC_CLASS_$_CADisplayLink", referenced from:
objc-class-ref-to-CADisplayLink in UIApplication+ScreenMirroring.o
"_CATransform3DIdentity", referenced from:
_CATransform3DIdentity$non_lazy_ptr in UIApplication+ScreenMirroring.o
(maybe you meant: _CATransform3DIdentity$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
每个 UIWindow 对象(基本上是顶层视图)都分配了一个屏幕(UIScreen),您当然可以设置您想要的屏幕。因此,将主要内容移动到第二个屏幕很容易,但镜像却很难。(如果你不想讲为什么它难看,请跳到下一段)我相信这是苹果的意图,既因为两次绘制相同的东西,一次具有更高的分辨率,也因为之前观看界面的体验与在视频播放、主题演讲开始等之前什么都看不到相比,进入任何演示模式都是相当低级的。这显然是您要根据具体情况考虑的事情,但仍然镜像是一个坏主意。
UIWindow 继承自 UIView,所以虽然我对这个确切的东西没有太多的个人经验,但你仍然应该能够让它绘制到某种位图上下文,然后使用两个不同的 UIWindows,每个只有一个图像视图在他们将实际像素推送到各自的屏幕上。如果您只想镜像一个特定的自定义视图(而不包括它的子视图),这会容易得多,因为您可以在设备屏幕上拥有该视图(以捕获任何输入),然后以您有方法的方式设计它调用以在它所在的任何上下文中绘制它(某些 drawRects 可能按原样正常工作)以及从另一个屏幕上的一个超级特别棒的自定义子视图调用它,这将实现 drawRect 以仅在实际视图上调用该方法。
希望这会有所帮助,对不起,我咆哮了一点:(