我无法在其内部UITableViewCell
实现自我调整UIStackView
。
对于UITableViewCell
我做这样的事情:
关于代码I'我这样做:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.estimatedRowHeight = 80
}
但是当我运行应用时,UITableViewCell
s没有调整大小:
如果UITableViewCell
内部有UIStackView
sqrt(x)
自我调整,我会错过什么?
答案 0 :(得分:2)
你有多行标签吗?如果是这样,请确保将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
}
答案 1 :(得分:1)
使自动调整单元格的自动布局在UITableViewCell上工作的技巧是确保你有限制来固定所有方面的每个子视图 - 也就是说,每个子视图应该具有前导,顶部,尾部和底部约束。然后,子视图的固有高度将用于指示每个单元格的高度。
这是a nice tutorial,它将帮助您完成它。
答案 2 :(得分:0)
答案 3 :(得分:0)
单元格调整大小工作正常。您的问题是您为堆栈视图设置了固定的高度。
水平堆栈视图中的视图的height
设置为64
,最有可能的标准优先级设置为1000
。此堆栈视图很可能已将其分发设置为Fill
。您基本上告诉了堆栈视图,包含的图像必须以64
的高度完全填充堆栈视图。这也将堆栈视图限制为64
,并在视图之外将垂直堆栈视图限制为Center
。如果您希望视图旁边的垂直堆栈视图大于64
,则将包含该视图的水平堆栈视图的分布更改为$daysOn = [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Mon'];
$daysOff = [ 'Sat', 'Sun' ];
$today = date("N", strtotime('today'));
$yesterday = date("N", strtotime('yesterday'));
$daysOnRearranged = array_merge(array_slice($daysOn, $today), array_slice($daysOn, 0, $yesterday));
。
答案 4 :(得分:0)
这是simple example,使用UIStackView
通过自动布局扩展和折叠大小可变的UITableViewCell
。
答案 5 :(得分:0)
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)
} }