gpt4 book ai didi

iOS tableview 在将图像加载到 imageview 时滞后于滚动

转载 作者:可可西里 更新时间:2023-11-01 17:13:05 25 4
gpt4 key购买 nike

我正在使用名为 SDWebImage 的库为 UITableviewCell 加载异步(背景)图像。但是在滚动 tableview 时仍然面临巨大的延迟。

我做错了什么吗?

加载的图像尺寸相当大,大约 1000x1000

将图像加载到单元格的代码:

[cell.image sd_setImageWithURL:[NSURL URLWithString:imageUrl]
placeholderImage:[UIImage imageNamed:@"image.png"]];

这里我将所有信息加载到 tableview 单元格中:

-(void)viewDidLoad{
[super viewDidLoad];
NSString *identifier = @"newsItem";
UINib *nib = [UINib nibWithNibName:@"NewsTableViewCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:identifier];


self.dataSource = [[NewsDataSource alloc] initWithQuery:[self getQuery]
populateCell:^UITableViewCell * _Nonnull(UITableView * _Nonnull tableView,
NSIndexPath * _Nonnull indexPath,
FIRDataSnapshot * _Nonnull snap) {

NewsItem *newsItem = [[NewsItem alloc] initWithDictionary:snap.value];


NSURL *url = [NSURL URLWithString:newsItem.image];

NSString *imageUrl = url.absoluteString;
NSData *data = [NSData dataWithContentsOfURL:url];


NewsTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
cell.image.layer.masksToBounds = YES;
cell.Title.text = newsItem.title;
cell.category.text = [newsItem.categories objectAtIndex:0];
cell.subTitle.text = newsItem.subTitle;

[cell.image sd_setImageWithURL:[NSURL URLWithString:imageUrl]
placeholderImage:[UIImage imageNamed:@"image.png"]];
cell.image.contentMode = UIViewContentModeScaleAspectFill;
[cell.image setFrame:CGRectMake(0,0,cell.frame.size.width,cell.frame.size.height)];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

return cell;
}];

[self.dataSource bindToView:self.tableView];
self.tableView.delegate = self;
}

最佳答案

从您的源代码中删除以下行,因为它会在您的 tableview 单元格激活期间(每次重复使用您的单元格时)下载图像数据。另请注意,它可能会加载数据前景,这可能是滚动 tableview 时出现延迟的原因。

NSData *data = [NSData dataWithContentsOfURL:url];

以下代码处理 tableview 单元格的图像表示(在背景中下载图像并使其在前景中可见)。因此,您的单元格中不需要上述代码。

[cell.image sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"image.png"]];

关于iOS tableview 在将图像加载到 imageview 时滞后于滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com