我有一个非常有趣的障碍要克服。我正在尝试在另一个单独的 UIView 中显示 UIView 的实时内容。
我要完成的工作与 Mac OS X 中的任务控制非常相似。在任务控制中,中心有大视图,显示桌面或应用程序。除此之外,还有一些可以重组的小视图。这些小视图显示其相应应用程序的实时预览。预览是即时的,帧率是准确的。最终,我试图以尽可能便宜的方式重现这种效果。
我尝试了许多可能的解决方案,这里显示的一个与我得到的一样接近。它有效,但是- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
并非每次更改都调用该方法。我的解决方案是[cloneView setNeedsDisplay]
使用 CADisplayLink 调用,因此在每次屏幕刷新时都会调用它。它非常接近我的目标,但帧速率极低。我认为这[CALayer renderInContext:]
太慢了。
如果有可能让两个 CALayer 渲染相同的源,那将是黄金。但是,我不确定如何解决这个问题。幸运的是,这只是一个概念应用程序,并不适用于 App Store,因此我可以使用私有 API。我研究了 IOSurface 和 Quartz 上下文,但到目前为止我还没有解决这个难题。任何投入将不胜感激!