在UITableView中延迟加载图像我的约有50个自定义单元格UITableView。我想在单元格中显示图像和标签,我从URL中获取图像。我想做一个懒惰的图像加载,以便在加载图像时UI不会冻结。我尝试在单独的线程中获取图像,但每次单元格再次可见时我必须加载每个图像(否则重复使用单元格会显示旧图像)。有人可以告诉我如何复制此行为。
3 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
我建议去NSOperation并在另一个线程上做你需要的任何事情。
这是我为图像加载编写的一个类:
- (id)initWithTarget:(id)trgt selector:(SEL)sel withImgURL:(NSString *)url {
if(self = [super init]) {
if(url == nil || [url isEqualToString:@""])
return nil;
target = trgt;
action = sel;
imgURL = [[NSURL alloc] initWithString: url];
}
return self;}- (void)main {
[NSThread detachNewThreadSelector:@selector(loadImage) toTarget:self withObject:nil];}- (void)loadImage {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage *img = [UIImage imageNamed: @"default_user.png"];
if(![[imgURL absoluteString] isEqualToString: @"0"]) {
NSData *imgData = [NSData dataWithContentsOfURL: imgURL];
img = [UIImage imageWithData: imgData];
}
if([target respondsToSelector: action])
[target performSelectorOnMainThread: action withObject: img waitUntilDone: YES];
[pool release];}- (void)dealloc {
[imgURL release];
[super dealloc];}希望有所帮助!
RISEBY
TA贡献1856条经验 获得超5个赞
你可以使用自我图像按钮..你可以从github下载自我图像按钮文件...添加到你的项目....
在你的xib中的图像视图中更改类“自我图像按钮”...
延迟加载称为同步请求..
自我形象称为异步请求。自我形象不要等待回应..一次显示所有图像..
- 3 回答
- 0 关注
- 651 浏览
添加回答
举报
0/150
提交
取消
