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 基于百分比的高度和最小高度的主要内容,如果未能解决你的问题,请参考以下文章
基于 CSS DIV 的表格,带有标题和有限高度,必要时显示滚动条 - 百分比高度
横向模式下基于百分比的布局(通过乘数查看与 Superview 相等的高度和宽度)时的问题