【发布时间】:2015-01-30 11:11:04
【问题描述】:
我正在使用 xib 和自动布局来构建我的自定义单元格,在我的单元格中,有一个多行标签。在 tableview 的 heightForRowAtIndexPath 中,我将使用
1 dequeueReusableCellWithIdentifier 获取单元格
2 然后调用 [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] 得到正确的高度。
但是在debug中,我发现调用heightForRowAtIndexPath时,我的单元格的宽度不是tableview的宽度,单元格的宽度和xib文件的宽度是一样的(因为在xcode6中,你可以将xib的大小设置为任意)。所以从 systemLayoutSizeFittingSize 得到的高度是不正确的。如何解决此问题以获得正确的单元格高度
从systemLayoutSizeFittingSize得到的尺寸:不正确,这个尺寸可能是340+的宽度(而设备是iPhone5,宽度是320),340+就是cell的xib文件的宽度
最后,我得到了解决方案,感谢 Ashish Gabani 的帮助,事实上,解决方案包括 2 个步骤: 1 将单元格框架重置为您的 tableView 大小 2 在调用systemLayoutSizeFittingSize之前调用cell的layoutSubViews,在自定义cell中,需要重写layoutSubViews方法。 这是解决这个问题的代码,我用红色方块标记它们,享受它
【问题讨论】:
标签: ios uitableview autolayout