【发布时间】:2012-01-12 11:29:59
【问题描述】:
刚刚开始涉足 iOS 开发,所以我希望我在这里得到了正确的细节...
我有一个UILabel,加载到通过 .xib 创建的表格单元格中。实际上有几个标签,其中一个的长度不同(因此包裹的高度也不同)。 heightForRowAtIndexPath等被正确覆盖,两个标签所需的高度被正确计算并分配给每个标签的.frame
设置完两个尺寸后,我将较小(固定长度,始终高一排)标签的 frame.origin.y 设置为与较大标签的匹配。这可以通过cellForRowAtIndexPath 看到,但在新创建的单元格的初始显示中,原点似乎在容器中不是完全垂直居中,而不是卡在顶部。
在单击“通过”单元格到另一个视图并返回到(现在重复使用,并且可能已经适当大小的容器)后,位置设置为与以前一样,它出现在我预期的位置。
它似乎在cellForRowAtIndexPath 返回后容器正在调整大小,并且在那里的某个地方为我们的标签找到了一个新位置;这可以解释为什么以后重用单元格可以解决问题。
我已经尝试了内部和外部模式和基线设置、拉伸设置等的所有明显合理的组合。无法解释和/或解决方法。
更新:
关于Changing the position of custom UIButton in custom UITableViewCell 问题的建议解决了这个问题。解决方案是继承UITableViewCell 并覆盖layoutSubviews,从而在TableView 完成正常定位后有机会重新定位子元素。一旦该人在此处回复,或者赏金到期,我将用代码回答自己。
【问题讨论】:
-
您是否尝试在
viewWillAppear:中调用[self.tableView reloadData]?这将强制在显示视图之前重新加载和显示所有单元格。不是对问题的解释,但也许是一种解决方法。听起来您只是以错误的顺序发生了一些事情。 -
我也有类似的问题stackoverflow.com/questions/8352530/…。如果有人能找到任何一个问题的解决方案,那就太好了! @Paul Roub - 你有没有找到任何临时的解决方法?如果有,请分享。
-
请在您的 heightForRow 和 cellForRow 中包含代码或其相关部分。我感兴趣的是您何时设置高度与何时移动标签。可能还有一些不正确对齐和原始笔尖布局的屏幕截图也会很好
标签: ios uikit uitableview