在iOS中动态更改TableView单元格高度

10 浏览
0 Comments

在iOS中动态更改TableView单元格高度

这个问题已经有了答案

在UITableView中使用自适应布局进行动态单元格布局和可变行高

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

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

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

admin 更改状态以发布 2023年5月22日
0
0 Comments

使用UITableViewDelegate 方法\n

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

0
0 Comments

最佳的方法是在应用程序中使用Constraint,这样您就不必管理 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];
}

0