UITableViewCell 基于百分比的高度和最小高度

Posted

技术标签:

【中文标题】UITableViewCell 基于百分比的高度和最小高度【英文标题】:UITableViewCell Percentage Based Height with Minimum Height 【发布时间】:2015-06-24 01:17:25 【问题描述】:

我有一个自定义表格视图单元格,我让自动布局管理它的高度。

tableView.estimatedRowHeight = 44 
tableView.rowHeight = UITableViewAutomaticDimension

在 TableViewCell 内我有一个子视图:

contentView.addSubview(subView)

我希望 TableViewCell 为屏幕高度的 40% 或 250pts。

我已经这样做了:

self.contentView.autoSetDimension(.Height, toSize: round(UIScreen.mainScreen().bounds.height * 0.40), relation: .GreaterThanOrEqual)
self.contentView.autoPinEdgeToSuperviewEdge(.Leading)
self.contentView.autoPinEdgeToSuperviewEdge(.Trailing)
self.subView.autoSetDimension(.Height, toSize: 250, relation: .GreaterThanOrEqual)

subView.autoPinEdgeToSuperviewEdge(.Top)
subView.autoPinEdgeToSuperviewEdge(.Leading)
subView.autoPinEdgeToSuperviewEdge(.Trailing)
subView.autoPinEdgeToSuperviewEdge(.Bottom)

这在我看来有点草率。这是最好的方法吗?

【问题讨论】:

当您希望单元格具有恒定高度时,您想使用 UITableViewAutomaticDimension 的任何特殊原因? 这是因为表格视图中的其他单元格具有动态高度 我会实现 heightForRowAtIndexPath 并返回屏幕高度的 40% 或 250pts,在你需要的时候只返回 UITableViewAutomaticDimension,这将大大提高滚动时的性能 嗯,所以可以使用自动调整单元格大小并仍然使用 heightForRowAtIndexPath?此单元格不会自动调整大小,但我的 tableView 中的其他单元格会根据内容量进行调整 是的,如果你在 heightForRow 中返回 UITableViewAutomaticDimension,它会说“这个特定的 indexPath 是自动调整大小的”.....(只要你已经设置了 estmatedHeight) 【参考方案1】:

您不需要向contentView 添加约束,它会自动将其大小调整到subView,试试这个:

subView.autoSetDimension(.Height, toSize: round(UIScreen.mainScreen().bounds.height * 0.40), relation: .GreaterThanOrEqual)
subView.autoSetDimension(.Height, toSize: 250, relation: .GreaterThanOrEqual)

subView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)

【讨论】:

以上是关于UITableViewCell 基于百分比的高度和最小高度的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 高度基于可用屏幕空间

基于 CSS DIV 的表格,带有标题和有限高度,必要时显示滚动条 - 百分比高度

UITableViewCell 具有基于宽度的固有高度

横向模式下基于百分比的布局(通过乘数查看与 Superview 相等的高度和宽度)时的问题

Swift中基于标签文本长度的动态自定义UITableViewCell的高度

UITableViewCell 中的约束不起作用