gpt4 book ai didi

ios - 设置动态 UITableViewCell 高度

转载 作者:行者123 更新时间:2023-12-01 17:02:33 26 4
gpt4 key购买 nike

我有一个 UITableView 有两个动态行。每一行都是 UITableViewCell 的子类,并且从 nib 加载。由于我的行包含动态内容,我使用 layoutSubviews 重新定位所有 subview :

- (void)layoutSubviews
{
[super layoutSubviews];

CGFloat initialHeight = titleLabel.bounds.size.height;
CGSize constraintSize = CGSizeMake(titleLabel.bounds.size.width, MAXFLOAT);
CGSize size = [titleLabel.text sizeWithFont:titleLabel.font constrainedToSize:constraintSize];
CGFloat delta = size.height - initialHeight;

CGRect titleFrame = titleLabel.frame;
titleFrame.size.height += delta;
titleLabel.frame = titleFrame;

locationLabel.frame = CGRectOffset(locationLabel.frame, 0, delta);
dayLabel.frame = CGRectOffset(dayLabel.frame, 0, delta);
timeLabel.frame = CGRectOffset(timeLabel.frame, 0, delta);
}

问题是我找不到一种方法来确定 TableView 委托(delegate)的 tableView:heightForRowAtIndexPath: 方法中的高度。

诀窍是我从 Nib 加载单元格,所以在它加载之后 titleLabel.bounds.size.width 是 300 像素(如 Nib ),不考虑设备类型(iPhone/iPad)和当前方向,所以它如果没有对方向和设备类型的条件检查,似乎不可能计算高度。有任何想法吗?

最佳答案

您的 layoutSubviews不调整单元格的大小,因此以下应该有效:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return cell.frame.size.height;
}

如果单元格因内容变化需要调整大小,可以设置 self.frame = newFrame里面 layoutSubviews .

也可以手动引起 layoutSubviews调用 setNeedsLayout .

关于ios - 设置动态 UITableViewCell 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com