Ios UITableViewCell和在单元格中重新定位UILabels
我有一个Ios UITableViewCell和在单元格中重新定位UILabels,ios,uitableview,autolayout,autoresizingmask,Ios,Uitableview,Autolayout,Autoresizingmask,我有一个UITableView,我有不同高度的单元格。我已经覆盖了索引路径中的高度,在调用[lb sizeToFit]后,我通过确定UILabel高度来计算正确的高度。我得到了每个单元格的正确高度,但我对重新定位UILabel的最佳位置r=有点模糊 我曾尝试将它们重新定位到cellforrowatinexpath中,但这似乎不起作用。所以,在我走得太远之前,这是正确的地方吗?从表面上看,它不起作用 问题:cellforrowatinexpath是调整控件大小和移动控件的正确位置吗 谢谢您的帮助。
UITableView
,我有不同高度的单元格。我已经覆盖了索引路径中的高度,在调用[lb sizeToFit]
后,我通过确定UILabel
高度来计算正确的高度。我得到了每个单元格的正确高度,但我对重新定位UILabel的最佳位置r=有点模糊
我曾尝试将它们重新定位到cellforrowatinexpath
中,但这似乎不起作用。所以,在我走得太远之前,这是正确的地方吗?从表面上看,它不起作用
问题:cellforrowatinexpath
是调整控件大小和移动控件的正确位置吗
谢谢您的帮助。创建您自己的UITableViewCell
子类,并覆盖layoutSubviews
。记得调用[超级布局子视图]
。然后,无论显示多少内容,都要正确布局单元格。(假设单元格将获得正确的帧)
在heightforrowatinexpath:
中,您需要根据单元格内容的布局方式执行相同的计算。确定标签需要的大小,并从表委托方法返回该高度
在单元中,将标签固定到superview(单元内容视图)的边缘。您可以使用自动调整大小的遮罩(灵活的宽度+高度)或自动布局来实现这一点。在任何一种情况下,这都会使标签自动调整到正确的框架,而无需你做任何其他事情。如果你能让autolayout工作,那么我认为@Wain有最好的主意。有时,布局对于autolayout来说可能太复杂,在这种情况下,您需要在代码中完成
代码在哪里?您在cellforrowatinexpath:
中执行此操作的想法完全可以。请记住,单元格会以其他行剩余的任意状态退出队列,因此不应依赖初始条件。e、 g
UILabel *label3 = (UILabel *)[cell viewWithTag:100];
// give the subviews constant tags (not dependent on row for example)
if (/* this is a short cell, so the third label must be hidden */) {
label3.alpha = 0.0;
}
// NOT DONE YET!
因为我们不知道label3在出列时的状态,所以我们必须覆盖所有条件,提供一个else块作为if块的补充
else {
// it must be a taller cell
// or else if, if there are other sizes of cells, etc.
label3.alpha = 1.0;
}
这可能会非常复杂,您可能会发现在自己的UITableView子类中重新定位此布局逻辑更具可读性,这是@NickGalasso的好建议。您真的需要吗?你在使用什么自动布局/调整大小?哈哈,这是个好问题。我的主要问题是在每个单元格中以UILabel显示文本。但是,由于每个单元格的文本长度不同,且UILabel的高度固定,因此单元格之间存在较大的空间。我需要在UILabel上调用sizeToFit以获得正确的高度,然后将UILabel下的其他控件向上移动,以便单元格正确显示…有意义吗?