4

我已经被困在这很长一段时间了。我查看了许多其他答案以及 Apple 的示例。

我想知道的是如何在 UIScrollView 中加载大图像,并能够对它们进行分页并放大它们,例如 Photos 应用程序。

我正在开发一个需要滚动浏览大图像的应用程序(大,我的意思是大于 1024 x 1024 的图像)。我已经实现了与照片应用程序类似的功能。但是,现在我使用的是大图像,我会收到内存警告和其他东西。我知道为什么我会收到警告,并且我知道我需要Tile the images

Apple 的示例演示了使用已经存在的小图像进行平铺。我的应用程序将下载多个图像,将它们保存在磁盘上,用户稍后将能够查看它们。因此,我无法使用其他程序剪切图像。

我需要一些可以平铺全尺寸图像的东西。任何帮助将不胜感激。此外,正如我之前提到的,我知道我必须对 Tiling 做一些事情。但是,我对此并不陌生,如果答案包含一些示例代码,我将不胜感激,我可以将其用作起点。

我查看了其他问题,似乎没有一个问题得到我满意的回答,因此,我再次问这个问题。

再次感谢!

4

1 回答 1

3

要使用平铺,您需要在视图中使用 CaTiledLayer。谷歌搜索它会给你很好的信息。基本上,您声明 UIVIew 正在使用它,声明一些级别的缩放细节,在 drawRect 中您将收到每个图块作为 rect 参数。

要平铺图像,请加载 UIImage (它使用内存,但比显示它要少得多)并用于您想要的每个平铺,例如:

UIGraphicsBeginImageContextWithOptions(tileSize, YES, 1);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, -tileSize.width * columnNumber, -tileSize.height*rowNumber);
[img drawInRect:CGRectMake(0, 0, tileSize.width, tileSize.height)];
UIImage* imgCut = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

并保存 imgCut。如果您在 CATiledLayer 中使用不同级别的细节,您可能希望生成具有不同缩放比例的平铺。

于 2011-09-06T18:40:31.673 回答