我在应用程序上工作,我在UILable和UILable中显示用户评论有sizetofit属性。我想根据UILable高度改变细胞高度。
我的问题是我如何更改单元格高度,例如第一个单元格高度可能为50,第二个单元格高度可能为100,依此类推。
答案 0 :(得分:3)
对于UITableViewCell的动态高度,您必须执行以下操作
告诉您的TableView使用以下代码动态布局每个Cell的高度
- (void)viewDidLoad {
[super viewDidLoad];
// two magic lines
tableView.estimatedRowHeight = 89
tableView.rowHeight = UITableView.automaticDimension
}
只需两行代码,您可以指示表视图计算与其内容匹配的单元格大小并动态呈现它。这种自定义单元格功能可以节省大量的代码和时间。你会爱上它。
答案 1 :(得分:0)
您可以使用此方法动态增加UITableViewCell
高度(No AutoLayout)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
NSMutableAttributedString *strName = [[NSMutableAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",strItemName]];
[strName addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16] range:NSMakeRange(0, strItemName.length)];
CGSize sizeItemName = CGRectIntegral([strName boundingRectWithSize:CGSizeMake(130, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin context:nil]).size;
int padding = 5;
//your default cell height for ex 55
if (sizeItemName.height < 55)
{
sizeItemName.height = 55;
}
return sizeItemName.height + padding;
}
答案 2 :(得分:0)
希望这可以通过tableview方法帮助你:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewAutomaticDimension;
}
答案 3 :(得分:0)
在heightForRowAtIndexPath中,根据相关的单元格数据计算动态高度。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *data = [self.dataSource objectAtIndex:indexPath.row];
return [MyTableViewCell heightForData:data];
}
然后在MyTabLeViewCell中编写如下函数,让我们说数据有&#34;内容&#34;这是动态高度的事实。你的tableViewCell定义了一个名为contentLabel的UILabel,内容为CONTENT_LABEL_WIDTH
+(CGFloat) heightForData : (NSDictionary *)data{
self.contentLabel.text = [data objectForKey:@"content"];
CGSize contentLabelSize = [self.contentLabel sizeThatFits:CGSizeMake(CONTENT_LABEL_WIDTH, CGFLOAT_MAX)];
return contentLabelSize.height;
//If you want to have a minimum cell height no matter how small your content is, you can use below fmaxf with a pre-defined CELL_MIN_HEIGHT value.
// return fmaxf(CELL_MIN_HEIGHT, height);
}