是否可以在UIScrollView中平铺图像而无需手动创建所有图块?

Jon*_*nah 14 iphone tiles image objective-c uiscrollview

在WWDC 2010 的iPhone示例代码" PhotoScroller "中,他们展示了如何通过滚动,缩放和分页图像来完成照片应用程序的相当好的模仿.他们还平铺图像以显示如何显示高分辨率图像并保持良好性能.

通过抓取不同分辨率的预缩放和剪切图像并将它们放置在构成整个图像的网格中,在示例代码中实现平铺.

我的问题是:有没有办法平铺图像而无需手动浏览所有照片并创建"图块"?照片应用程序如何能够动态显示大图像?

编辑 以下是Deepa的答案代码如下:

- (UIImage *)tileForScale:(float)scale row:(int)row col:(int)col size:(CGSize)tileSize  image:(UIImage *)inImage
{
CGRect subRect = CGRectMake(col*tileSize.width, row * tileSize.height, tileSize.width, tileSize.height);
CGImageRef tiledImage = CGImageCreateWithImageInRect([inImage CGImage], subRect);
UIImage *tileImage = [UIImage imageWithCGImage:tiledImage]; 
return tileImage;
}
Run Code Online (Sandbox Code Playgroud)

spd*_*spd 12

这里是平铺图像生成的代码:

在PhotoScroller源代码中,将tileForScale:row:col:替换为以下内容:

inImage - 要创建切片的图像

- (UIImage *)tileForScale: (float)scale row: (int)row column: (int)col size: (CGSize)tileSize image: (UIImage*)inImage
{
    CGRect subRect = CGRectMake(col*tileSize.width, row * tileSize.height, tileSize.width, tileSize.height);
    CGImageRef tiledImage = CGImageCreateWithImageInRect([inImage CGImage], subRect);
    UIImage *tileImage = [UIImage imageWithCGImage: tiledImage];
    return tileImage;
}
Run Code Online (Sandbox Code Playgroud)

此致,Deepa


iwa*_*bed 5

我发现这可能有所帮助:http: //www.mikelin.ca/blog/2010/06/iphone-splitting-image-into-tiles-for-faster-loading-with-imagemagick/

您只需在TerminalMac上作为shell脚本运行它.