如何解决优化自定义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;
}
解决方法
动态行高很昂贵,因为它不能有效地缓存呈现的视图,因为运行时在调用之前不知道给定单元格要返回的高度。尽可能消除它。苹果工程师告诉我,将所有单元格绘制得比需要使用更大的行高得多,比使用动态高度更有效。
缓存ѭ1返回的对象
我对您的cell.avatarImageView不太了解,但是如果它不根据URL对图像进行某些缓存,它将调用Internet或文件系统以重新加载每个图像单元格显示的时间。尝试使用EGOImageView堆栈,它可以有效地缓存其图像,并且是一些漂亮的代码。
当您在EGO github代码中时,抓住他们的EGOCache并将其用于缓存您必须解析的其他一些值,例如bodyLabel文本
如果您对该单元格的任何视图都是透明的,请观看有关WWKit 2011的UIKit性能的视频。他们有一种更有效的方法来绘制表格单元格上的透明度
为什么要动态更改标签的位置-调用[Utils alignLabelWithTop:]?
还要观看有关使用仪器的WWDC视频,他们将介绍如何查找绘图代码在哪里影响性能。今年有一些(不是全部)非常好的会议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。