【问题标题】:Change tableview cell height dynamically ios [duplicate]动态更改tableview单元格高度ios [重复]
【发布时间】:2017-07-01 08:14:53
【问题描述】:

嗨,在我的应用程序中,我需要在 tablview 中显示带有描述的产品。为了实现这一点,我在 tablview 单元格内容视图上添加了两个 satckviews。两个堆栈视图都包含标签,一个标签有产品名称,另一个标签有描述。在应用程序启动时,应用程序单元格高度默认为 100,但是当我选择单元格时,我想在单元格中显示完整的描述以及产品名称,我的意思是需要更改单元格高度。谁能帮我实现这一点。如何动态更改单元格高度。请帮我。

我尝试了以下方法,它在堆栈视图标签中显示了更多描述,但单元格高度没有改变。所以无法看到完整的描述。

cell.productDescription.numberOfLines=50;
cell.productDescription.lineBreakMode=NSLineBreakByCharWrapping;

【问题讨论】:

  • 检查这个答案stackoverflow.com/questions/41439786/… 如果您需要以编程方式执行此操作,或者使用自行调整大小的 tableView 单元格
  • @Naresh G 你希望它在单元格点击或当你的表格视图加载时自动调整其单元格高度?
  • 您可以将 numberOfLines 更改为 0,以删除任何最大限​​制,并根据需要使用尽可能多的行。

标签: ios objective-c iphone uitableview uistackview


【解决方案1】:

为您的应用程序使用 约束 的最佳方式。因此,您不必管理 heighforCell。如果你要编码部分,那么你必须找出文本的高度,然后你需要在 heightForRowAtIndexPath 方法中进行设置。

这是从字符串中获取高度的代码:

-(float )getHeightForText : (NSString *)strText
{
    UILabel *lbl = [[UILabel alloc] init];
    CGRect rect;
    rect.origin = CGPointZero;
    float width = YOUR_LABEL_WIDHT
    rect.size = CGSizeMake(width, 3000);
    lbl.font = MESSAGE_TEXT_FONT;
    lbl.frame = rect;
    lbl.text = strText;
    lbl.numberOfLines = 1000;
    [lbl sizeToFit];

    float height = lbl.frame.size.height;
    return height;
}

在您的 heightForRowAtIndexPath 方法中编写以下代码:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [self getHeightForText:YOUR_TEXT];
}

【讨论】:

    【解决方案2】:

    使用UITableViewDelegate方法

    #pragma mark - UITableViewDelegate
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-30
      相关资源
      最近更新 更多