【发布时间】:2016-08-04 03:03:54
【问题描述】:
我希望有一个与<Table> HTML 标记类似的行为,即框架根据其内容调整大小。
在我的上下文中,我使用 UIStackView 作为 UITableViewCell 的内容视图。由于单元格中的项目是各种信息,因此单元格的结果高度应该是可变的。
我的策略是以编程方式将单元格构建为具有 .Vertical 轴的 UIStackView,如代码 sn-p 中所示:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let sv = UIStackView(frame: tableview.frame)
sv.axis = .Vertical
cell.addSubview(sv)
for i in information {
let l = UILabel()
l.text = i
sv.addSubViewAndArrange(l)
}
return cell
}
很遗憾,单元格大小没有根据内容调整,因此我必须自己设置单元格高度,如下:
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return cellHeight // a constant
}
我该如何解决这个问题?
【问题讨论】:
-
我认为您应该使用单元格适当地限制您的 stackView 以使这种方法起作用。
-
我已经测试了这条路径(向单元格添加了 sv T-T、L-L、R-R、B-B 约束),但这会导致单元格超宽(一次只能看到一个单元格)。 @zcui93
-
StackView 本身应该受到单元格的约束,以便单元格随之增长。然后设置子视图,以便 StackView 将根据它们的“内在内容大小”正确增长
标签: ios uitableview swift2 height uistackview