我创建了一个非常简单的
UITableViewCell1
只有一个标签,我把标签限制在单元格的
contentView
边界。
layoutSubviews()
如果我打印标签的框架,它会将标签的框架报告为
(0.0, 0.0, 0.0, 0.0)
,但运行时可以清楚地看到标签的帧不是0。
我根本误解了什么吗?
class SimpleTitleLabelCell: UITableViewCell {
lazy private(set) var titleLabel: UILabel = {
let titleLabel = UILabel()
self.contentView.addSubview(titleLabel)
titleLabel.numberOfLines = 0
titleLabel.text = "Title"
titleLabel.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
titleLabel.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor),
titleLabel.topAnchor.constraint(equalTo: self.contentView.topAnchor),
titleLabel.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor),
titleLabel.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor)
])
return titleLabel
}()
override func layoutSubviews() {
super.layoutSubviews()
print("\(self.titleLabel.frame)")
//prints (0.0, 0.0, 0.0, 0.0)
}
}
TableViewController
.
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.rowHeight = UITableView.automaticDimension
self.tableView.estimatedRowHeight = 100
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
return SimpleTitleLabelCell()
}
}