繁体   English   中英

iPhone:使用3D图层转换时如何以编程方式拍摄屏幕快照

[英]iPhone: how to take screen shots programmatically when using 3d layer transformations

我正在尝试以编程方式将当前视图的图像保存到UIImage。 当前视图包含背景,以及许多已将3d转换应用于图层的UIImageViews,例如

CATransform3D t = CATransform3DIdentity;
t = CATransform3DRotate(t, rotationX, 1.0, 0, 0);
t = CATransform3DRotate(t, rotationY, 0, 1.0, 0);
object.layer.transform = t;

我目前正在使用以下代码抓取当前视图的屏幕截图:

UIGraphicsBeginImageContext(background.bounds.size);
[background.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

但是,对象上的3d变换会丢失,例如,对象会出现在已保存的图像中,就好像没有应用3d变换一样。 有没有办法以编程方式抓取包含3d变换的屏幕截图?

UIGetScreenImage()不是一个选项,因为它是一个专用API,并且此应用将转到应用商店。

我认为目前无法完成,因为renderInContext不会渲染Core Animation变换,UIGetScreenImage()并不是您所指出的公共API。 在StackOverflow上已经问过相同的问题:

1) 如何从3D转换后的UIImageView创建/渲染UIImage?

2) CALayer renderInContext

如果该功能是您应用程序的关键,那么我会考虑使用OpenGL视图并捕获颜色缓冲区(如果您不想显示它,可以在屏幕外呈现)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM