我已经看到了一些类似的问题,但没有人能够帮助我,所以这就是为什么我用我的代码发布这个,因为我无法解决问题所在。
UITableView具有从Web服务获取的图像,但滚动似乎很慢。更确切地说,它在滚动时似乎滞后。
这是cellForRowAtIndexPath方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ItemsCell";
ItemsViewCell *cell = (ItemsViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
RSSItem *item = [[channel items] objectAtIndex:[indexPath row]];
cell.titleLabel.text = [item title];
cell.creatorLabel.text = [item creator];
cell.pubTimeLabel.text = [item pubTime];
if ([item thumbnail] != nil) {
cell.thumbContainer.image = [item thumbnail];
}
else
cell.thumbContainer.image = [UIImage imageNamed:@"defaultcellImage.png"];
cell.thumbContainer.layer.shadowColor = [[UIColor blackColor] CGColor];
cell.thumbContainer.layer.shadowOffset = CGSizeMake(-3.0, 3.0);
cell.thumbContainer.layer.shadowOpacity = 0.5f;
cell.thumbContainer.layer.shadowRadius = 3.0f;
if ([[TheFeedStore sharedStore] hasItemBeenRead:item]) {
cell.titleLabel.textColor = [UIColor grayColor];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
else
{
cell.titleLabel.textColor = [UIColor blackColor];
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
UIImage *background = [self cellBackgroundForRowAtIndexPath:indexPath];
UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
cellBackgroundView.image = background;
cell.backgroundView = cellBackgroundView;
return cell;
}
这是我的viewDidLoad方法:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataSaved:)
name:@"DataSaved" object:nil];
}
- (void) dataSaved:(NSNotification *)notification{
[self.tableView reloadData];
}
并在单独的文件中我下载图片如下:
- (void) downloadThumbnails:(NSURL *)finalUrl
{
dispatch_group_async(((RSSChannel *)self.parentParserDelegate).imageDownloadGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSMutableData *tempData = [NSData dataWithContentsOfURL:finalUrl];
[tempData writeToURL:[self cachedFileURLFromFileName:self.thumbFile] atomically:YES];
dispatch_async(dispatch_get_main_queue(), ^{
thumbnail = [UIImage imageWithData:tempData];
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataSaved" object:nil];
});
});
}
当我在模拟器上测试项目时,它看起来很好并且没有滞后,而如果我在设备上尝试它,那么我可以看到这种慢速滚动行为。
一切似乎都很好。任何人都可以帮我指出问题所在。请不要建议使用SDWebImage或任何其他库来获取图像,如果您只是想通过Apple推荐LazyTableImage项目,也不要回答。感谢
更新:经过一些搜索后,看起来像是缩小了图片的大小,但是由于某些原因,可用的解决方案对我不起作用。