objective-c - 只加载使用的UIImage数据

标签 objective-c ios uiimage

我的应用程序中捆绑了 400 个 400x300 的图案图像。我想制作某种工厂方法来获取该图像的一部分并将它们加载到 UIImageViews 中。我在使用内容模式和剪切到边界方面取得了一些成功,但是当我将大量这些内容加载到 View 中时,加载 View 可能需要 5 秒以上的时间。这是我当前方法的示例。

UIImageView *tinyImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed@"400x300testImage.png"];
[tinyImageView setFrame:CGRectMake(0, 0, 10, 200)];
[tinyImageView setContentMode:UIViewContentModeTopLeft];
[tinyImageView setClipsToBounds:YES];
[self.tinyImagesView addSubview:tinyImageView];

我一直在阅读 ImageIO 类文件,我认为我的答案就在那里,但我很难将可行的代码组合在一起。在另一个 stackoverflow 问题中我遇到了这段代码

CFDictionaryRef options = (__bridge CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys:
                                                (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform, 
                                                (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailFromImageIfAbsent, 
                                                (id)[NSNumber numberWithFloat:200.0f], (id)kCGImageSourceThumbnailMaxPixelSize, 
                                                nil];
    CGImageRef imgRef = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options);

    UIImage *scaled = [UIImage imageWithCGImage:imgRef];

    CGImageRelease(imgRef);
    CFRelease(imageSource);

    return scaled;

这与加载完整图像和剪辑的加载时间相似。

是否可以仅读取图像文件的 10x200 strip 并将其加载到 UIImageView 中,其速度与创建 10x200 png 并使用 imageNamed 加载它一样快?

最佳答案

我很确定您真正想要的是一个CATiledLayer,您可以将其指向一组图像并让它自动提取所需的内容。

您只需将 CATiledLayer 添加到任何 UIView 即可。

关于objective-c - 只加载使用的UIImage数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9058933/

相关文章:

objective-c - Root View Controller 项不可单击

iphone - Safari 阅读器有 API 吗?

ios - 在 applicationWillEnterForeground 触发时更改 UIView

ios - 由于一般错误,此时无法处理 lookupSoftwareForBundleId 请求

ios - UIImage 大小比我设置的要大

ios - 如何删除通过代码创建的 UIImageView?

ios - AVAudioPlayer 是不是重启了背景音乐?

objective-c - Objective-c 中的 "instance variable"和 "property"之间有区别吗?

iOS:共享一个透明的 UIImage w/UIActivityViewController?

objective-c - UIBezierPath 绘制的 View 的模糊屏幕截图