我正在尝试在设置文本后在UITableViewCell
中获取UILabel
的x
。我需要在单元格中添加一些带有背景颜色的子视图,因此我需要在显示细胞显示之前就知道X和宽度。
所以,我在cellForRowAtIndexPath
中的单元格中设置了标签的新文本,然后尝试获取标签框架的X:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
cell.label.text = "new text"
var x = CGRectGetMinX(cell.label.frame)
}
当然,我无法获得在设置新文本之后的更新标签的正确x,因此我试图在willDisplayCell
中获取它:
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
var x = CGRectGetMinX(cell.label.frame)
}
但是var x
仍然错了。
这也行不通:
class MyCell : UITableViewCell{
@IBOutlet weak var label: UILabel!
override func layoutSubviews() {
super.layoutSubviews()
var x = CGRectGetMinX(label.frame)
}
}
另外,我想注意所有这些方法在首次显示过程中不起作用,但是如果我将某些单元格滚动到底部,然后滚动回到顶部,那么上层单元格正确显示(并且我得到正确的x
(。<<<<<<<<<<<</p>
在显示"设置子视图"之前,如何获得正确的x
和width
?
设置标签的文本后,尝试布局标签以获取更新的帧:
cell.label.text = "new text"
cell.label.layoutIfNeeded() //layout label
var x = CGRectGetMinX(cell.label.frame)