我在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。因此我需要重新定位UIElement的标签宽度或位置,以响应将文本分配给label的需要。我尝试了几个位置来查找何时可以访问框架位置的新值,但是失败了,例如awakeFromNib和myText的didSet。所以什么时候可以访问UITableViewCell中的帧和约束的最终值?
答案 0 :(得分:0)
实际上您不需要
var myText: String? {
didSet {
if let _myText = self.myText {
self.myLabel.text = _myText
} else {
self.myLabel.text = ""
}
}
}
只需在其中分配文本
let cell = //
cell.lbl.text = "text_here"
或在自定义单元类中创建一个configure函数并调用
标签将根据当前约束条件调整大小
还有最后一帧
override func layoutSubviews()
super.layoutSubviews()
}