现在几乎每个ios应用程序都有“Feed”选项。 编程通常包括从网上获取图像,缓存它们,处理页面,“拉到更新选项”等等 - 所有标准的东西。
但看起来没有标准的解决方案呢?
我尝试了“三个20” - 真正庞大,复杂的图书馆,里面有很多模块。它真的缺乏良好的文档!从缓存中提取图像时,它也有“减速”。
也许我应该分别为每个小任务使用不同的小库?像HJCache,EGO等
或者在没有任何库的情况下从头开始编写所有内容会更好吗?
请在这里给我关于最佳实践的建议,我现在真的被困住了。
答案 0 :(得分:0)
This one非常容易接受刷新。
对于图像加载,我为UIImageView编写了以下类别:
// .h
@interface UIImageView (UIImageView_Load)
- (void)loadFrom:(NSURL *)url completion:(void (^)(UIImage *))completion;
@end
// .m
#import "UIImageView+Load.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIImageView (UIImageView_Load)
- (void)loadFrom:(NSURL *)url completion:(void (^)(UIImage *))completion {
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (data) {
self.image = [UIImage imageWithData:data];
if (completion) completion(self.image);
}
}];
}
@end
// To use it when building a cell
//...
MyModelObject *myModelObject = [self.myModel objectAtIndex:indexPath.row];
if (myModelObject.image) {
cell.imageView.image = myModelObject.image;
} else {
NSURL *url = [NSURL urlWithString:myModelObject.imageUrl];
[cell.imageView loadFrom:url completion:^(UIImage *image) {
// cache it in the model
myModelObject.image = image;
cell.imageView.image = image;
}];
}
// ...
答案 1 :(得分:0)
我是Leah Culver的Pull to Refresh库的粉丝,或者是STableViewController处理拉动刷新以及向下滚动的无尽滚动。
对于图片加载,请尝试DailyMotion应用中的SDWebImage。