iphone使用自定义单元格滚动tableview太慢了

Posted

技术标签:

【中文标题】iphone使用自定义单元格滚动tableview太慢了【英文标题】:iphone Scrolling of tableview with custom cells is too slow 【发布时间】:2010-11-29 17:15:13 【问题描述】:

我在 iphone 上部署我的应用程序时遇到了这个问题,在模拟器上没有检测到。

这是 cellforrow 的代码...

    - (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath


    NSLog(@"beginning cellforRowAtIndexPath for section %d, and cell %d",[indexPath indexAtPosition:0],[indexPath indexAtPosition:1]);

    static NSString *MyIdentifier = @"MyIdentifier";
    NSString *fieldTitle;
    NSString*fieldDescription;
    [_stopWatch start];
    [PersonalSection GetField:&fieldTitle AndValue:&fieldDescription UsingIndexPath:indexPath AndPersonalInformation:_personalInfo];


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) 
        [[NSBundle mainBundle] loadNibNamed:@"ViewContent" owner:self options:nil];
        cell = tvCell;
        self.tvCell=nil;

        ((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;
        ((UILabel*) [cell.contentView viewWithTag:2]).layer.cornerRadius=11;
    


    UILabel*mainLabel=(UILabel*) [cell.contentView viewWithTag:1];
    mainLabel.text=fieldTitle;
    //mainLabel.textColor = [UIColor colorWithRed:0.745 green:0.116 blue:0.176 alpha:1.0];

    UILabel*detailLabel=(UILabel*)[cell.contentView viewWithTag:2];
    detailLabel.text=fieldDescription;
    [_stopWatch stop];
    NSLog(@"---------End cellforRowAtIndexPath");

    return cell;

其余部分用于部分,就像 return 3 或 5 那里没有真正的瓶颈。 所以我想知道是什么让它这么慢。 现在获取“[PersonalSection GetField:&fieldTitle...”的数据相当快,它占用 iphone 最大 0.1 毫秒。问题出在其他地方,我猜有一种优化此代码的方法,我想知道自定义单元格的影响它只是一个带有链接到此 ViewController 的标签和文本字段的单元格。 任何想法。

【问题讨论】:

【参考方案1】:

当您创建单元格时,您将标识符设置为@“cell”,但当您将其出列时,您正在寻找@“MyIdentifier”。看起来你每次都在重新创建单元格。

【讨论】:

实际上我正在使用相同的标识符进行出队,但是这是错误的做法。但是我一直在发布错误的代码,我刚刚更新了它。【参考方案2】:

好的,主要的性能问题是内容视图的子视图的圆角。 使用 QuartzCore:

#import <QuartzCore/QuartzCore.h>
((UILabel*) [cell.contentView viewWithTag:1]).layer.cornerRadius=11;

我删除了这些控件并减小了控件的大小以适合分区表的单元格。现在它们看起来很圆,但文本字段和标签不是。 这明显地修复了我的滚动性能。 谢谢大家的帮助。

【讨论】:

我遇到了同样的问题。解决这个问题的唯一方法是:使用模拟cornerRadius的UIImageView或按你说的做。

以上是关于iphone使用自定义单元格滚动tableview太慢了的主要内容,如果未能解决你的问题,请参考以下文章

带有自定义 textview 的 iphone tableview 单元格 - 获取 textview 参考

iPhone Tableview 在水平滚动而不是垂直中使用单元格

表格内容在使用子视图的自定义单元格的 TableView 滚动上消失 - Swift

Swift中带有标题的TableView的自定义分页大小(一次滚动一个单元格)

使用自定义 uitableviewcell 滚动 tableview 的问题

如果滚动到底部太快,JavaFX TableView 会崩溃,自定义单元格也会在操作上变得不合逻辑