如何强制-drawViewHierarchyInRect:afterScreenUpdates:以@ 2x分辨率拍摄快照?

时间:2014-02-04 10:57:40

标签: ios iphone ipad ios7 core-graphics

-drawViewHierarchyInRect:afterScreenUpdates:是iOS 7中的fast way,用于拍摄视图层次结构的快照。

它采用快照,但分辨率为@ 1x。 iPhone 5S上的快照看起来像素化且模糊。我没有转换创建快照的视图。

我不想模糊它,并希望在屏幕上看到良好​​的质量。 以下是我捕捉它的方式:

UIGraphicsBeginImageContext(self.bounds.size);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

我也尝试过:

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, self.contentScaleFactor);

仍然以低1x质量呈现。

是否有其他方法可以配置图像上下文,因此它是@ 2x分辨率?

2 个答案:

答案 0 :(得分:12)

正确的是:

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0f);

答案 1 :(得分:1)

好的,问题是self.contentScaleFactor在视网膜显示设备上返回错误的值。它是1,应该是2。

这很有效,但当然它不太理想,因为它对非视网膜设备没有后退。

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 2);