gpt4 book ai didi

iphone - 带有自定义单元格的 UITableView 缓慢滚动

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:44 26 4
gpt4 key购买 nike

我有三个不同的单元格。 Cell01、Cell02 和 Cell03。 Cell01 必须只出现一次,在表格 View 的顶部,其余的 02 和 03 必须插入 (02, 03, 02, 03 (...))。

问题是在滚动 TableView 时存在一些“滞后”。我正在从文档文件夹中加载图像,并且我也在调整它的大小以不需要太多处理,但它仍在缓慢滚动。它正在重用单元格(我检查了 if(!cell))。

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
int row = indexPath.row;

if (row == 0) {
Cell01 *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell01ID"];
if (!cell) {
cell = (Cell01*)[[[NSBundle mainBundle] loadNibNamed:@"Cell01" owner:self options:nil] objectAtIndex:0];
cell.someLabel.text = @"First";
cell.someImage.image = [self imageInDocumentsDirectoryWithName:@"mainimage" andSize:CGSizeMake(200, 200)];
}

} else if (row % 2 == 0) {
Cell02 *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell02ID"];
if (!cell) {
cell = (Cell02 *)[[[NSBundle mainBundle] loadNibNamed:@"Cell02" owner:self options:nil] objectAtIndex:0];
cell.randomLabel.text = @"Second";
cell.someImage.image = [self imageInDocumentsDirectoryWithName:@"secondimage" andSize:CGSizeMake(200, 200)];
}
} else {
Cell03 *cell = nil;
cell = [tableView dequeueReusableCellWithIdentifier:@"Cell03ID"];
if (!cell) {
cell = (Cell03 *)[[[NSBundle mainBundle] loadNibNamed:@"Cell03" owner:self options:nil] objectAtIndex:0];
cell.anotherLabel.text = @"Third";
cell.someImage.image = [self imageInDocumentsDirectoryWithName:@"thirdimage" andSize:CGSizeMake(200, 200)];

}
}
}


- (UIImage *)imageInDocumentsDirectoryWithName:(NSString *)fileName andSize:(CGSize)size
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [documentsDirectory stringByAppendingPathComponent:fileName];
UIImage *image = [UIImage imageWithContentsOfFile:path];
image = [image resizedImageToFitInSize:size scaleIfSmaller:YES];

return image;
}

知道如何改进这个表格 View (并让它滚动得更快)吗?

最佳答案

我认为滚动缓慢是由于从文档目录将图像加载到单元格上。从 Doc 目录获取图像需要一些时间,每当你滚动你的 TableView 时,都会创建一个新单元格并从 doc 目录加载图像,这需要一些时间。尝试在单元格上使用延迟加载图像。也在新线程而不是主线程中加载图像..

Apple 有一个示例项目可以帮助您。 lazy loading table view

希望对您有所帮助。

关于iphone - 带有自定义单元格的 UITableView 缓慢滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296367/

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