您好,在我的应用程序中,我需要在tablview中显示带描述的产品。为实现这一点,我在tablview单元格内容视图中添加了两个satckviews。两个stackviews都包含标签,一个标签有一个prodcut名称,另一个标签有描述。在应用程序启动时,默认情况下应用程序单元格高度为100,但是当我选择单元格时,我想在单元格中显示完整描述以及产品名称,我的意思是需要更改单元格高度。任何人都可以帮我解决如何实现这一点。如何动态改变单元格高度。请帮我。
我尝试了下面的方法,它在堆栈视图标签中显示了更多描述,但是单元格高度没有得到改变。所以无法看到完整的描述。
cell.productDescription.numberOfLines=50;
cell.productDescription.lineBreakMode=NSLineBreakByCharWrapping;
答案 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