Я пытаюсь поэкспериментировать с ограничениями в Swift Playground и схожу с ума.У меня есть маленький class CLListTableViewCell: UITableViewCell
с UILabel в нем:
let nameLabel: UILabel = {
let label = UILabel()
label.text = "Here is a great text"
label.translatesAutoresizingMaskIntoConstraints = false
label.textAlignment = .left // text alignment in center
return label
}()
У меня есть функция для настройки макета, которую я вызываю в конце init:
func addSubViewsAndLayout() {
contentView.addSubview(nameLabel)
let views = ["nameLabel": nameLabel]
let horizontalConstraintsStringRepresentation = "H:|-[nameLabel]-|"
let horizontalConstraints = NSLayoutConstraint.constraints(withVisualFormat: horizontalConstraintsStringRepresentation, options: .alignAllCenterY, metrics: nil, views: views)
let verticalConstraintsStringRepresentation = "V:|-[nameLabel]-|"
let verticalNameConstraints = NSLayoutConstraint.constraints(withVisualFormat: verticalConstraintsStringRepresentation, options: .alignAllLeading, metrics: nil, views: views)
NSLayoutConstraint.activate(horizontalConstraints)
NSLayoutConstraint.activate(verticalNameConstraints)
}
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
addSubViewsAndLayout()
}
Все, что я получаю, это красивая белая пустая клетка.Кто-нибудь может указать на то, что я здесь делаю неправильно?Любое недостающее ограничение?В консоли Playground нет индикации.
--- EDIT ---
Проблема, похоже, исходит от tableView, в котором я отображаю ячейку.Вот код:
class TableViewController : UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell") as? CLListTableViewCell ?? CLListTableViewCell(style: .default, reuseIdentifier: "cell")
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Section \(section)"
}
}
--- EDIT 2 ---
Вот снимок экрана с результатом .