获取更新的单元格框架X坐标



我正在尝试在设置文本后在UITableViewCell中获取UILabelx。我需要在单元格中添加一些带有背景颜色的子视图,因此我需要在显示细胞显示之前就知道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>

在显示"设置子视图"之前,如何获得正确的xwidth

设置标签的文本后,尝试布局标签以获取更新的帧:

cell.label.text = "new text"
cell.label.layoutIfNeeded()  //layout label
var x = CGRectGetMinX(cell.label.frame)

最新更新