我的 TableViewCell 中有一个标签,我将设置它的文本并在单元格中抛出一个变量(例如 myText),如下所示:
class ProjectManagementTableViewCell: UITableViewCell {
@IBOutlet weak var myLabel: UILabel!
var myText: String? {
didSet {
if let _myText = self.myText {
self.myLabel.text = _myText
} else {
self.myLabel.text = ""
}
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
我没有在 InterfaceBuilder 中修复 myLabel 宽度大小,因此我希望它根据从 cellForRowAt 函数获取的文本来调整大小。到目前为止一切都很好。但我希望标签宽度小于某个值,除此之外,我还有一个图像,我希望该图像与标签文本末尾的距离为 10 pt。因此,在 UIElements 重新定位以响应将文本分配给标签后,我需要访问 UIElements 的标签宽度或位置。我尝试了几个位置来查找何时可以访问帧位置的新值,但失败了,例如 myText 的 awakeFromNib 和 didSet。那么什么时候我可以访问 UITableViewCell 中框架和约束的最终值?
最佳答案
其实你不需要
var myText: String? {
didSet {
if let _myText = self.myText {
self.myLabel.text = _myText
} else {
self.myLabel.text = ""
}
}
}
只需在里面分配文本
let cell = //
cell.lbl.text = "text_here"
或者在自定义单元类中创建一个配置函数并调用它
标签将根据当前约束调整大小
还有里面的最终帧
override func layoutSubviews()
super.layoutSubviews()
}
关于ios - UITableViewCell 布局和约束何时最终确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54987064/