首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UITableView自动调整行大小在iPhone 6Plus上神秘地打破了行约束

UITableView自动调整行大小在iPhone 6Plus上神秘地打破了行约束
EN

Stack Overflow用户
提问于 2015-08-24 06:40:06
回答 3查看 7K关注 0票数 25

我有一个自定义的UITableViewCell,它有一个缩略图和一堆文本。将行高度配置为使用

代码语言:javascript
复制
tableView.estimatedRowHeight = 129;
tableView.rowHeight = UITableViewAutomaticDimension

行高应精确计算为138个点。在iPhone 5上一切看起来都很棒。然而,在iPhone 6 Plus上,对于随机行,自动行高度会间歇性地失败,日志如下。

代码语言:javascript
复制
(
    "<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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-29 15:50:43

这个警告告诉你在你的约束中有冲突。将高度约束的优先级降低到999,它就会消失。在你的Github项目中进行了测试,运行良好。

票数 34
EN

Stack Overflow用户

发布于 2015-08-29 17:44:01

3倍比例的显示器( iPhone 6+是)上的0.333可能与单元分隔符相连。

注意,您的约束并没有设置单元格的大小,而是设置了contentView的大小。但是单元格必须在单元格分隔符的单元格高度上增加2个像素(= 0.666点)。Autolayout尝试将视图位置保持在整数边界上,因此将0.666点添加到单元格高度可能会导致内容高度增加0.333。

您可以通过将表分隔符设置为None来避免该错误。尽管像另一个answer建议的那样,将其中一个优先级设置为999 (通常是最低优先级)通常是一个很好的解决方案。

票数 10
EN

Stack Overflow用户

发布于 2015-08-24 08:19:43

警告告诉您问题的确切原因,但您可能没有意识到这一点。前三个约束是针对90像素高的图像,该图像比容器顶部低20像素,比容器底部边缘高20像素。这是130,这与第四个约束不兼容,第四个约束要求总高度为138。但是,因为底边约束是相对于容器的边界的,所以增加了一定数量的像素。或者删除总高度限制(我的建议),或者更改顶部和底部边缘的数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32172250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档