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的自定义分页大小(一次滚动一个单元格)