我有一个包含图形的视图(称为outPutView),如uIImageViews和标签。我需要渲染outPutView的图像及其子视图。我正在使用renderInContext:UIGraphicsGetCurrentContext()来做到这一点。工作正常,但我需要缩放视图。我在outPutView上使用转换。这会成功缩放视图及其子视图,但转换不会呈现。虽然视图在屏幕上缩放。最终渲染以原始大小显示视图,而渲染上下文为目标大小(此处为@ 2x iPhone视图大小)。
感谢您阅读!!
[outPutView setTransform:CGAffineTransformMake(2, 0, 0, 2, 0, 0)];
CGSize renderSize = CGSizeMake(self.view.bounds.size.width*2, self.view.bounds.size.height*2);
UIGraphicsBeginImageContext(renderSize);
[[outPutView layer] renderInContext:UIGraphicsGetCurrentContext()];
renderedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 0 :(得分:9)
我刚刚完成了这项工作,尽管方向相反(缩小)。以下是相关代码的摘要:
// destination size is half of self (self is a UIView)
float rescale = 0.5;
CGSize resize = CGSizeMake(self.width * rescale, self.height * rescale);
// make the destination context
UIGraphicsBeginImageContextWithOptions(resize, YES, 0);
// apply the scale to dest context
CGContextScaleCTM(UIGraphicsGetCurrentContext(), rescale, rescale);
// render self into dest context
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
// grab the resulting UIImage
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
要向上扩展而不是向下扩展,可以使用rescale = 2
。
答案 1 :(得分:1)
我通过重新排序我的观点来解决这个问题。实际上在输出视图之间添加另一个视图:从中获取渲染上下文的视图,以及通过transform缩放的视图。它有效,但我不知道为什么在这一点上。对此的任何想法将不胜感激。谢谢阅读。