优化自定义UITableViewCell创建

我有下面的代码,只是创建一个自定义的UITableViewCell。我正在创建一个动态的行高,是否很昂贵?任何方式来优化呢?优化自定义UITableViewCell创建

我也调整了我在cellForRow中的一个标签的框架。有什么方法可以优化吗?

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

{

MessageCell *cell = (MessageCell*)[self tableView:tableView cellForRowAtIndexPath:indexPath];

return cell.bodyLabel.bounds.size.height + 30;

}

// Customize the appearance of table view cells.

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

{

static NSString *CellIdentifier = @"MessageCell";

MessageCell *cell = (MessageCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

cell = [[[MessageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

}

cell.usernameLabel.text = [[items objectAtIndex:indexPath.row]valueForKey:@"user_login"];

cell.bodyLabel.text = [[[items objectAtIndex:indexPath.row]valueForKey:@"body"]gtm_stringByUnescapingFromHTML];

[Utils alignLabelWithTop:cell.bodyLabel];

cell.dateLabel.text = [Utils toShortTimeIntervalStringFromStockTwits:[[items objectAtIndex:indexPath.row]valueForKey:@"created_at"]];

[cell.avatarImageView reloadWithUrl:[[items objectAtIndex:indexPath.row]valueForKey:@"avatar_url"]];

return cell;

}

回答:

  • 动态行的高度是昂贵的,因为它不能有效地缓存渲染视图,因为运行时不知道你会什么高度来返回给定的细胞,直至它的调用。尽可能摆脱这一点。苹果工程师告诉我,将所有单元绘制得比所需的高一点,以解决一些较大的行比使用动态高度更有效。
  • 缓存对象由[items objectAtIndex:indexPath.row]
  • 回来我不知道有足够的了解你的cell.avatarImageView,但如果不这样做基于URL的图像的一些缓存它,它会被呼唤互联网或文件系统在每次显示单元格时重新加载该映像。试试EGOImageView stack,它高效地缓存了它的图像,并且是一些漂亮的代码。
  • 当您处于EGO github代码中时,抓住他们的EGOCache并使用它缓存您必须解析的其他一些值,例如bodyLabel文本
  • 如果您对该单元格的任何视图都是透明的,观看关于UIKit性能的WWDC 2011视频。他们有一个太更有效的方法来绘制透视表格单元格
  • 为什么你改变标签的动态定位 - 调用[Utils alignLabelWithTop:]?

同时观看使用仪器的WWDC视频,他们会回顾如何找到绘图代码在哪里查杀性能。今年有一些(不是全部)非常棒的会议。

以上是 优化自定义UITableViewCell创建 的全部内容, 来源链接: utcz.com/qa/266358.html

回到顶部