动态更改tableview单元格高度

时间:2017-02-13 11:01:02

标签: ios objective-c iphone uitableview uistackview

您好,在我的应用程序中,我需要在tablview中显示带描述的产品。为实现这一点,我在tablview单元格内容视图中添加了两个satckviews。两个stackviews都包含标签,一个标签有一个prodcut名称,另一个标签有描述。在应用程序启动时,默认情况下应用程序单元格高度为100,但是当我选择单元格时,我想在单元格中显示完整描述以及产品名称,我的意思是需要更改单元格高度。任何人都可以帮我解决如何实现这一点。如何动态改变单元格高度。请帮我。

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

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

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:0)

使用UITableViewDelegate方法

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