我正在使用核心图库来绘制图形。对于某些动画,我必须拍摄整个屏幕的图像快照,以使其流畅。问题是当我尝试从图中获取图像时。图表总是颠倒的。如果我只将图形本身作为快照,那么这不会是一个问题 - 我可以轻松地对其应用变换。问题是,我正在为整个屏幕制作动画,因此我拍摄了整个UIWindow的快照,其中包含一个子视图中的图形。 我尝试使用core.lot上的coreplot项目中提供的coreplot 0.2.2示例。我只是向窗口添加了一个按钮(以便在每个选项卡上都可见),按下按钮时,我从窗口内容中获取图像,并使用以下代码保存为相册库中的图像:
UIView *window = [[UIApplication sharedApplication] keyWindow];
UIGraphicsBeginImageContext(window.frame.size);
[window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(newImage, nil, NULL, NULL);
结果如上所述。与屏幕上可见的图形相比,生成的图像中的图形被颠倒渲染。我做错了还是那个核心情节错误?
答案 0 :(得分:4)
瞬间改变变换只会对我的动画有所帮助。仍然在将应用程序放到后台时,Apple会对应用程序进行快照,在这里它看起来仍然很奇怪。
我做了什么以及对我有用的东西: 我换了一行:
self.layer.sublayerTransform = CATransform3DMakeScale(1.0, -1.0, 1.0);
文件-initWithFrame:
中的-awakeFromNib
和CPLayerHostingView.m
以下是:
self.layer.transform = CATransform3DMakeScale(1.0, -1.0, 1.0);
现在它起作用,看起来像一个魅力。
答案 1 :(得分:0)