优化自定义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