我有一个UITableViewCell
用作自我调整大小的tableViewCell。它内部有一个UILabel
,一个UIView
和一个UIButton
。所有这些都垂直放在里面。我希望在需要时自动调整UILabel
和UIView
的大小。它们按预期调整大小。但问题是,调整大小后我无法达到他们的高度。 frame.size.height
始终显示之前的高度。
答案 0 :(得分:0)
通过这样做我得到了高度。 cell.detailsTextLabel
的高度是所需的高度。
UILabel *label = [[UILabel alloc] init];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
label.preferredMaxLayoutWidth = 373;
[label invalidateIntrinsicContentSize];
label.text = detailsString;
label.font= cell.detailTextLabel.font;
CGFloat theSweetLittleHeight = label.intrinsicContentSize.height;
答案 1 :(得分:0)
我不确定您的自动布局如何控制标签高度,但也许您可以依赖于根据显示的文本以及您已使用的已知约束来确定标签的高度(例如373宽度) )
CGFloat maxWidth = 373, maxHeight; // Whatever you desire here, 373 from your example
CGFloat messageHeight = ceilf([detailsString boundingRectWithSize:CGSizeMake(maxWidth, maxHeight)
options:<ANY_OPTIONS_HERE>
attributes:@{NSFontAttributeName:detailTextLabel.font}
context:nil].size.height);
答案 2 :(得分:-1)
您可以为标签和视图创建高度约束的插座,如下所示,并在tableView加载后从中获取值。
@IBOutlet weak var labelHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var viewHeightConstraint: NSLayoutConstraint!
let labelHeight = labelHeightConstraint.constant
let viewHeight = viewHeightConstraint.constant