У меня есть «tableHeaderView», который является UIView.Он содержит UIImageView, высота которого установлена на 200:
let tableView: UITableView = .init(frame: .zero)
tableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(tableView)
let tableHeaderView: UIView = .init(frame: .zero)
tableHeaderView.translatesAutoresizingMaskIntoConstraints = false
let imageView: UIImageView = .init(frame: .zero)
imageView.translatesAutoresizingMaskIntoConstraints = false
tableHeaderView.addSubview(imageView)
tableView.tableHeaderView = tableHeaderView
var constraints: [NSLayoutConstraint] = []
// Set imageView's leading and trailing to tableHeaderView's leading and trailing
constraints += NSLayoutConstraint.constraints(
withVisualFormat: "H:|-0-[imageView]-0-|",
options: [],
metrics: nil,
views: ["imageView": imageView]
)
// Set imageView's top and bottom to tableHeaderView's top and bottom
// Also, set imageView's height to 200
constraints += NSLayoutConstraint.constraints(
withVisualFormat: "V:|-0-[imageView(200)]-0|",
options: [],
metrics: nil,
views: ["imageView": imageView]
)
// Set tableHeaderView's width to tableView's width
constraints.append(
NSLayoutConstraint.init(
item: tableHeaderView,
attribute: .width,
relatedBy: .equal,
toItem: tableView,
attribute: .width,
multiplier: 1,
constant: 0
)
)
// Set tableView's leading and trailing to view's leading and trailing
constraints += NSLayoutConstraint.constraints(
withVisualFormat: "H:|-0-[tableView]-0-|",
options: [],
metrics: nil,
views: ["tableView": tableView]
)
// Set tableView's top and bottom to view's top and bottom
constraints += NSLayoutConstraint.constraints(
withVisualFormat: "V:|-0-[tableView]-0-|",
options: [],
metrics: nil,
views: ["tableView": tableView]
)
NSLayoutConstraint.activate(constraints)
Эти ограничения дают мне такой результат:
Выможно увидеть, что несколько ячеек покрыты видом заголовка.Когда я использую отладчик пользовательского интерфейса, вот что я получаю:
Это говорит мне, что ограничения tableHeaderView неоднозначны, однако предупреждающие сообщения не выводилиськонсоль.Как мне решить эту проблему?