[英]How can I make self sizing UITableViewCell with a UIStackView inside it
单元格大小调整工作正常。 您的问题是您为 Stack View 设置了固定高度。
水平 Stack View 中的 View 将其height
设置为64
,最有可能将其标准优先级设置为1000
。 此堆栈视图很可能将其分布设置为Fill
。 您基本上告诉 Stack View 包含的图像必须完全填充 Stack View 的高度64
。 这也将 Stack View 限制为64
并限制了除 View 之外的垂直 Stack View。 如果您希望 View 旁边的垂直 Stack View 大于64
请将包含 View 的水平 Stack View 的分布更改为Center
。
你有多行标签吗? 如果是这样,请确保您将 IB 中的 lines 属性设置为 0 而不是 1。
固定 stackView 的顶部和底部。
如果这样做不行,请检查这些:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
在 UITableViewCell 上让自动布局自动调整单元格大小的技巧是确保你有约束来固定每个子视图的所有边——也就是说,每个子视图应该有前导、顶部、尾部和底部约束。 然后,子视图的固有高度将用于指示每个单元格的高度。
这是一个很好的教程,可以帮助您完成它。
这是一个使用UIStackView
通过自动布局扩展和折叠可变大小的UITableViewCell
的简单示例 。
open class IntrinsicHeightTableView: UITableView {
open override var contentSize: CGSize {
didSet { invalidateIntrinsicContentSize() }
}
open override var intrinsicContentSize: CGSize {
layoutIfNeeded()
return CGSize(width: UIView.noIntrinsicMetric, height: contentSize.height)
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.