动态调整UITableViewCell高度的实现方法
2012-07-17 10:56
357 查看
有时我们需要动态调整UITableViewCell的高度,根据内容的不同设置不同的高度,以前看到一种实现方法,写得有点麻烦,具体地址找不到了,这里有个更好的(至少我认为),分享一下部分代码。
2012.03.11更新:一年后回来审视儿时的代码,发现heightForRowAtIndexPath那个实现方法确实不太好,会dequeue掉一个可以reuse的cell导致经常都要新创建cell,会导致效率方面的问题,最好用NSString的sizeWithFont:forWidth:lineBreakMode:这一系列的方法计算label的高度。
转帖:http://longtimenoc.com/archives/%E5%8A%A8%E6%80%81%E8%B0%83%E6%95%B4uitableviewcell%E9%AB%98%E5%BA%A6%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95
2012.03.11更新:一年后回来审视儿时的代码,发现heightForRowAtIndexPath那个实现方法确实不太好,会dequeue掉一个可以reuse的cell导致经常都要新创建cell,会导致效率方面的问题,最好用NSString的sizeWithFont:forWidth:lineBreakMode:这一系列的方法计算label的高度。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; label.tag = 1; label.lineBreakMode = UILineBreakModeWordWrap; label.highlightedTextColor = [UIColor whiteColor]; label.numberOfLines = 0; label.opaque = NO; // 选中Opaque表示视图后面的任何内容都不应该绘制 label.backgroundColor = [UIColor clearColor]; [cell.contentView addSubview:label]; [label release]; } UILabel *label = (UILabel *)[cell viewWithTag:1]; NSString *text; text = [textArray objectAtIndex:indexPath.row]; CGRect cellFrame = [cell frame]; cellFrame.origin = CGPointMake(0, 0); label.text = text; CGRect rect = CGRectInset(cellFrame, 2, 2); label.frame = rect; [label sizeToFit]; if (label.frame.size.height > 46) { cellFrame.size.height = 50 + label.frame.size.height - 46; } else { cellFrame.size.height = 50; } [cell setFrame:cellFrame]; return cell; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; //UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath]; return cell.frame.size.height; }
转帖:http://longtimenoc.com/archives/%E5%8A%A8%E6%80%81%E8%B0%83%E6%95%B4uitableviewcell%E9%AB%98%E5%BA%A6%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95
相关文章推荐
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- ios动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 动态调整UITableViewCell高度的实现方法
- 给UITableViewCell动态调整高度
- 动态调整UITableViewCell的高度及字体大小设置
- 动态调整UITableViewCell的高度
- js实现iframe动态调整高度的代码
- 动态调整UITableViewCell高度
- iOS学习之路十三(动态调整UITableViewCell的高度)