2

下面的代码块在我的应用程序中用于截取 iPad mini(768 x 1024) 的当前屏幕截图:

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

在不同的视图控制器中,我展示了一个宽度为 540、高度为 290 的 UIScrollView。我在 UIImageView 中显示屏幕捕获 UIImage,我以编程方式创建了 initWithFrame,矩形宽度为 250,高度为 250。滚动视图的内容大小是 768 乘 250。

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

编辑

屏幕截图

在我要捕获的图像的屏幕截图上方。

下面是 UIScrollView 中 UIImageView 中的 UIImage:

在此处输入图像描述

4

2 回答 2

2

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

于 2013-04-09T19:04:23.933 回答
1

尝试更改 UIImageViews 的内容模式。如果你使用UIViewContentModeScaleAspectFill,你不应该在边缘看到任何额外的空间。

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

于 2013-04-09T17:48:10.557 回答