【发布时间】:2017-06-30 13:35:34
【问题描述】:
我有一个UITableView,他的单元格高度是根据自动布局自动生成的。一切都很好,直到我添加一个高度会根据渲染单元格的最终宽度以自定义方式变化的子视图。
简而言之,我需要显示一个自定义的数字视图,可见的数字将取决于单元格的宽度,并且视图的数量也会影响高度。
问题是我目前正在layoutSubviews 中对相关子视图进行计算和视图操作,但这会导致表格视图单元格的高度严重偏离。所以我相信我需要足够早地进行计算和视图添加/删除,以便自动布局可以计算正确的表格视图单元格高度,但已经足够晚了,所以我实际上有正确的单元格宽度来进行我的计算。
在不同的地方强制 setNeedsLayout 和 layoutIfNeeded 并不能解决这个问题。
有趣的是,这是其中一种情况,当滚动时高度开始自我校正,最终所有单元格的高度都正确。似乎在第一次加载表格视图时情况非常糟糕。
【问题讨论】:
-
查看次数对高度有何影响?您是否可能在宽屏上显示一排视图,在窄屏上显示两排?
-
但是单元格的宽度在 UITableView 中永远不会改变。你最好做的是使用具有固定布局的两个单元格(和两个重用标识符)。然后将逻辑移到
cellForRow方法中,并将正确的单元格类型出列。 -
@DonMag 我正在展示一系列完全适合单元格宽度的缩略图。鉴于它们的固定纵横比,可见视图的数量会影响该行的高度。
-
@Fogmeister 它们可以根据旋转进行更改,并且 iPad 支持分屏等各种宽度。鉴于它需要支持 iPhone 5 和 plus 设备,它需要支持的宽度很多,因此需要动态计算而不是硬编码。
-
@Sencha 啊,是的,你是对的。那么,您更改布局的逻辑是什么?将代码放入问题中。
标签: ios uitableview uikit ios-autolayout