笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述需要在app的Documents文件夹中为图像加载延迟表图像相关的知识,希望能为你提供帮助。
我将我的图像放入iPhone应用程序的文档目录中。
我把它们加载到表格中。但我希望它们作为懒惰的表格图像加载。
我搜索过网络,但找到了从服务器加载图片的链接。如何从我的文档目录中加载它们?
我试过这个链接,但它对我不起作用:
Lazy load images for UITableViewCells from NSDocumentDirectory?
答案【需要在app的Documents文件夹中为图像加载延迟表图像】可以轻松修改从服务器下载图像的工作解决方案,以从NSDocumentsDirectory加载。这是一个简单的实现,您可以将其创建为独立类或集成到现有类中。我没有包含100%的代码,只是放入足以显示加载图像。 imageLoader.h
需要定义一个协议,包括imageLoader:didLoadImage:forKey:
和_delegate
和_images
的iVars /属性。
// imageLoader.m// assumes that that images are cached in memory in an NSDictionary
- (UIImage *)imageForKey:(NSString *)key
{
// check if we already have the image in memory
UImage *image = [_images objectForKey:key];
// if we don't have an image:
// 1) start a background task to load an image from available sources
// 2) return a default image to display while loading
if (!image) {
// this is the simplest example of background execution
// if you need more control use NSOperationQueue or Grand Central Dispatch
[self performSelectorInBackground:@selector(loadImageForKey) withObject:key];
image = [self defaultImage];
}return image;
}// attempts to load an image from available sources and notifies the delegate when done
- (void)loadImageForKey:(NSString *)key
{
NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init];
// attempt to load the image from a file
UIImage *image = [UIImage imageWithContentsOfFile:[self imagePathForKey]];
// if no image, attempt to load the image from an URL here if desired// if no image, return default or notFound image
if (!image) {
image = [self notFoundImage];
}if ([_delegate respondsTo:@selector(imageLoader:didLoadImage:ForKey:)]) {
// this message will be sent on the same thread as loadImageForKey
// you can either modify this to send the message on the main thread
// or ensure the delegate does any desired UI changes on the main thread
[_delegate imageLoader:self didLoadImage:image forKey:key];
}[pool release];
}// returns a path to the image in NSDocumentDirectory
- (NSString)imagePathForKey:(NSString *)key
{
NSString *path;
// your implementation here
return path;
}
推荐阅读
- 使用手动视图包含时,为什么在错误的时间调用viewWillDisappear()
- iPad上只有app app的应用程序图标
- Test-Flight App beta测试时间限制
- Ionic 3(css的一部分在Android平台上不起作用)
- 离子div边界颜色变化离子android由代码
- Ionic Android UnhandledPromiseRejectionWarning strings.xml
- 可以将Google Appengine的管理控制台集成到spring-boot项目中吗()
- 将.apply()与'new'运算符一起使用。这可能吗()
- 将可执行文件移动到其他位置后,将忽略app.exe.manifest设置