【发布时间】:2015-11-17 06:48:03
【问题描述】:
我有一个自定义 UITableViewCell,它有一个缩略图和一堆文本。行高配置为使用
自动计算tableView.estimatedRowHeight = 129;
tableView.rowHeight = UITableViewAutomaticDimension
行高应精确计算为 138 点。 iPhone 5 上的一切看起来都很棒。但是,在 iPhone 6 Plus 上,自动行高会间歇性地失败,并显示以下日志。
(
"<NSLayoutConstraint:0x17009ddd0 V:|-(20)-[scoop.ThumbnailImage:0x124d2a5a0] (Names: '|':UITableViewCellContentView:0x124e23200 )>",
"<NSLayoutConstraint:0x17009de70 UITableViewCellContentView:0x124e23200.bottomMargin == scoop.ThumbnailImage:0x124d2a5a0.bottom + 20>",
"<NSLayoutConstraint:0x17009e780 V:[scoop.ThumbnailImage:0x124d2a5a0(90)]>",
"<NSLayoutConstraint:0x17009ef00 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x124e23200(138.333)]>"
)
日志的最后一行似乎说由于某种原因,行高被计算为 138.333 而不是 138。我现在一直在敲我的头,但我无法弄清楚为什么会这样。有人可以帮忙吗?
更新:这就是我的表格视图单元格的样子。
更新我无法从主仓库中获取代码,因为它是一个更大项目的一部分。但是我已经设法通过一个非常简单的理智项目重现了这个问题。请在on github找到它。
【问题讨论】:
-
你能贴出计算单元格高度的代码吗?
-
我正在使用 tableView.estimatedRowHeight = 129; tableView.rowHeight = UITableViewAutomaticDimension 来计算我的控制器 viewDidLoad 中的行高。
-
仍然,如果它是完全动态的,则应该没有错误。即使它不完全是 168。您是否暗示您在单元格内的视图的设置方式是,如果您将它们的所有高度相加,它正好是 168?
-
缩略图配置为距单元格的左上角和下边缘 20 点。缩略图高度本身是 108 点。将所有空格加起来,缩略图高度等于 168。至少这是我期望的动态行高。
-
是否显示错误?那么文本标签呢?我假设它们嵌入在 UIView 中。你设置它的高度还是根据里面标签的高度计算出来的?
标签: ios swift uitableview autolayout constraints