【问题标题】:Can a cell (UITableView) change its height in real time?一个单元格(UITableView)可以实时改变它的高度吗?
【发布时间】:2016-02-24 09:41:02
【问题描述】:

我有一个带有标签的单元格,有时标签文本会发生变化,单元格应该扩大一点。我正在使用自动布局和可变高度单元格(你知道,UITableViewAutomaticDimension 和estimatedRowHeight)。除非在修改标签后我调用 reloadData 或重新加载该特定单元格,否则它似乎不起作用。 这正常吗?有什么方法可以自动执行此操作,或者不必使用视图控制器重新加载现在应该有另一个高度的单元格?谢谢。

【问题讨论】:

  • 正常,计算单元格框内文字所占空间,将该值设置为变量,然后将该变量传递给:(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  • 问题是,只需调用 reloadData 或 reloadRowsAtIndexPaths 就可以了,无需手动计算任何高度(因为我使用自动布局)。我的问题是是否可以自动完成,或者我必须始终手动重新加载。
  • 好的,尝试调用[tableView beginUpdates] [tableView endUpdates] 这应该会根据其约束和新文本更改重新加载单元格框架

标签: ios uitableview ios-autolayout


【解决方案1】:

我在我的一个应用程序中遇到了类似的问题,我所做的是 添加2个约束,设d为标签的默认高度 1.标签高度>=d,优先级=750 2.高度=d,优先级=1000 和 uitableview 单元格属性到 UITableViewAutomaticDimension 这对我有用。

【讨论】:

    【解决方案2】:
    try this one 
    
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if ([[[arrFeed objectAtIndex:indexPath.section] objectForKey:@"post_keywords"] isEqualToString:@""])
        {
            int heigthHeading = [self getHeightForText:[[arrFeed objectAtIndex:indexPath.section] objectForKey:@"post_heading"] withFont:[UIFont systemFontOfSize:17.0] andWidth:245.0];
    
    
            return 25+heigthHeading;
        }
        else
        {
    
             int heigthHeading = [self getHeightForText:[[arrFeed objectAtIndex:indexPath.section] objectForKey:@"post_heading"] withFont:[UIFont systemFontOfSize:17.0] andWidth:245.0];
    
    
            return 25+heigthHeading;
    
        }
    }
    

    【讨论】:

      【解决方案3】:

      使单元格高度动态化(您也可以像这样在同一个单元格上添加多个标签并且您的单元格增加的高度取决于标签文本)

      为标签添加四个约束(顶部、底部、前导、尾随)

      设置第0行数和换行模式自动换行

      添加这两个委托方法

      -(CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NSIndexPath )indexPath 
      {
          return 44;
      } 
      
      -(CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath 
      {
         return UITableViewAutomaticDimension;
      }
      
      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多