如何动态改变uitableviewcell的高度

 我来答
1997排长
高粉答主

2016-02-01 · 说的都是干货,快来关注
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:822万
展开全部
动态的计算cell高度的
以下举例:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
//打算比方
NSArray *list = _subDictionary[key];//数据
CellFrame *cellFrame = [[CellFrame alloc] init];
cellFrame.list = list;//传入数据,在list的set方法中动态的计算cell的高度
return cellFrame.cellHeight;//返回高度
}
网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
huanglenzhi
推荐于2016-03-26 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517199
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

  有时我们需要动态调整UITableViewCell的高度,根据内容的不同设置不同的高度,以前看到一种实现方法,写得有点麻烦,具体地址找不到了,这里有个更好的(至少我认为),分享一下部分代码。


  - (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];

  return cell.frame.size.height;

  }


  经验:cell最好用自定义的,可以按照你想要的结果来设计,效果很好,如图:

转载

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式