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