我有一个带有多个子视图的 UIView,每个子视图都有不同的 CATransform3D 应用于它们的层。我想创建这个视图的 UIImage 表示。
我研究了以下解决方案:
- UIGetScreenImage(私有 API,所以这是不行的)
- 按照 Apple 在此处的描述获取图层并调用 renderInContext:http: //developer.apple.com/library/ios/#qa/qa1703/_index.html。该方法不考虑图层变换,正常绘制视图。
- 如此处所述使用 glReadPixels:何时可以使用 glReadPixels?. 在处理 UIViews 时,这似乎不是一个选项。
- 使用 Marcos https://stackoverflow.com/a/13850972/368674描述的技术生成转换后的图像,导致图像撕裂无法识别。我通过尝试 hfossli 的改进版本 ( https://stackoverflow.com/a/16203572/368674 ) 来跟进它,它正确地转换了大多数图像,扭曲或失败了其他图像,并给图像一个混叠效果。
为了实现这一目标,我还有其他途径可以探索吗?