带有 detailTextLabel 的 UITableViewController 估计行高度
Posted
技术标签:
【中文标题】带有 detailTextLabel 的 UITableViewController 估计行高度【英文标题】:UITableViewController estimatedRowHeight with detailTextLabel 【发布时间】:2017-02-03 11:34:55 【问题描述】:快速提问:我有一个UITableViewController
,一般设置工作正常。
我只是想微调间距。
在UITableViewController
的viewDidLoad
我打电话:
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 60
我的一些默认单元格使用 detailTextLabel
(style: .subtitle
),而有些则不使用 (style: .default
)。
当他们这样做时,单元格似乎不会调整行高。
文本看起来很拥挤,尤其是当 detailTextLabel
为两行时。
我想避免重写tableView:heightForRowAtIndexPath:
函数?
有诀窍吗?
谢谢
【问题讨论】:
有什么快速的屏幕显示正在发生的事情吗? :) 而不是使用高度属性方法尝试与高度委托方法相同。 Bcz 委托方法为每个单元格调用,因此您可以为每个单元格设置不同的高度。 使用约束。和委托方法。 查看本教程raywenderlich.com/129059/self-sizing-table-view-cells 为什么你不想覆盖这个?表视图:heightForRowAtIndexPath: 【参考方案1】:这是系统单元格的默认行为。如果您期望另一个输出,只需创建您的自定义单元格,并根据需要提供顶部和底部约束。祝你好运;)
【讨论】:
我试过这个,但是当我设置topAnchor
和bottomAnchor
时,标签移动了,但单元格高度没有改变。
您对单元格做了哪些自定义?我的意思是自定义单元格,具有您自己的标签的单元格,并且两个标签都设置了约束。当有正确的约束时,单元格的大小会正确调整。
好的 - 所以我不应该在我的自定义 UITableViewCell 中使用 self.textLabel
和 self.detailTextLabel
?
是的,只需在情节提要或笔尖中添加 2 个标签,设置字体、行数等,并为它们添加约束。
我没有使用故事板。我试图通过使用默认标签来摆脱它。 (见上面的编辑)将尝试使用自定义标签。【参考方案2】:
我遇到了与您相同的问题,我得到了一个最佳答案。我以编程方式添加了约束,它对我有用。希望对解决您的问题有所帮助。
- (void)awakeFromNib
[super awakeFromNib];
for (NSLayoutConstraint *cellConstraint in self.constraints)
[self removeConstraint:cellConstraint];
id first_object = cellConstraint.first_object == self ? self.contentView : cellConstraint.first_object;
id seccondItem = cellConstraint.second_object == self ? self.contentView : cellConstraint.second_object;
NSLayoutConstraint *contentViewConstraint =
[NSLayoutConstraint constraintWithItem:first_object
attribute:cellConstraint.firstAttribute
relatedBy:cellConstraint.relation
toItem:seccondItem
attribute:cellConstraint.secondAttribute
multiplier:cellConstraint.multiplier
constant:cellConstraint.constant];
[self.contentView addConstraint:contentViewConstraint];
【讨论】:
也许我需要删除现有的约束。将首先尝试。 让我知道删除约束是否对您有用。 你能交换估计高度和行高的值代码吗?在我的代码中,rowHeight 高于估计的高度。以上是关于带有 detailTextLabel 的 UITableViewController 估计行高度的主要内容,如果未能解决你的问题,请参考以下文章
Swift UITableViewCell detailTextLabel.text 抛出错误“致命错误:无法打开 Optional.None”
在 UITableViewCell 中为 detailTextLabel 添加右边距
在 UITableViewCell 中的 detailTextLabel 中添加多行