ios - UITableViewCell 布局和约束何时最终确定?

标签 ios swift uitableview

我的 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/

相关文章:

ios - 使用 for 更改 var 名称

ios - 标注附件按钮显示,但不可见

ios - 如何在 iOS 12 中以编程方式终止应用程序

ios - 如何在 swift 中使用 FMDB 以异步模式插入数据?

iPhone 固定位置 UITableView 背景

iphone - 用 NSMutableArray 填充 UITableview

ios - 委托(delegate)快速丢失 View Controller 对象

swift - Switch 中 TableView 中的 UISwitch

ios - UITableView 错误 : indexpath. row is starting from 1 instead of 0

iphone - 从底部加载 UITableView