2013-04-09 49 views
2

清楚下面的代码块是在我的申请中所使用采取一个iPad迷你的当前屏幕的(768×1024)的屏幕截图:UIImage的渲染未在iPad赠送

UIImage *img; 
UIGraphicsBeginImageContext(self.view.bounds.size); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return img; 

在一个不同的ViewController,我呈现一个宽度为540,高度为290的UIScrollView。我在UIImageView中显示了screencapture UIImage,我用程序创建了一个矩形宽度为250,高度为250的initWithFrame。滚动视图的内容大小为768乘以250.

现在运行该应用程序,我使用上面的代码块显示四个矩形并截屏。过渡到UIScrollView时,图像不清晰(并且不清楚,有些矩形缺少边而有些矩形比其他粗)。有没有办法显示清晰的图像?我知道图像必须从原来的768从1024缩小到250到250.这可能是问题吗?如果是这样,那么最好的解决办法是什么?

编辑

Screensheet

在上面,我想捕捉的图像的屏幕截图。

下面是一个UIScrollView内的UIImageView的UIImage的:

enter image description here

+0

我很难想象清晰度问题。你可以张贴截图吗? – 2013-04-09 17:51:44

+0

当UI元素的框架属性包含不是整数的数字时,UI元素可能会显得模糊不清。尝试将各个框架元素(特别是原点)转换为“int”。 – daltonclaybrook 2013-04-09 17:52:52

+0

@daltonclaybrook你究竟是什么意思?我现在已经用图像编辑了。 – David 2013-04-09 18:32:32

回答

1

试着改变你的UIImageViews的content mode。如果您使用UIViewContentModeScaleAspectFill,则不应该在边缘看到任何额外的空间。

更新:从您发布的屏幕截图中,它看起来像这只是UIKit中内置缩小的效果。首先尝试手动缩小图像以适合using Core Graphics。或者,您可能想使用类似CILanczosScaleTransform核心图像过滤器(iOS 6+)。

+0

似乎没有那么大的帮助。请参阅上面的图像编辑 – David 2013-04-09 18:27:41

+0

对不起,但只是要说清楚,当您说手动缩小图像时,您建议最好的方法是什么? – David 2013-04-09 20:29:56

+0

下面是使用Core Graphics实现它的一种方法:[以正确的方式调整UIImage的大小](http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/ ) – 2013-04-10 17:33:08

2

将每个坐标转换为int或使用CGRectIntegral直接在CGRect上执行该操作,小数点需要AA并使图像模糊。

+0

AA指的是? – David 2013-04-09 21:16:30

+0

@David AA =抗锯齿 – fumoboy007 2013-04-09 22:34:04