2

我有一个包含图形的视图(称为 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();
4

2 回答 2

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.

于 2012-09-20T11:16:43.030 回答
1

我通过重新排序我的观点解决了这个问题。实际上在输出视图之间添加了另一个视图:渲染上下文的视图,以及通过变换缩放的视图。它起作用了,但我现在不知道为什么。对此的任何想法将不胜感激。谢谢阅读。

于 2012-09-21T04:30:22.233 回答