Я создаю экран для приложения, которое имеет избранное. На этом экране отобразится список пунктов, которые пользователь добавил в избранное. Этот список будет отображаться в виде таблицы, довольно ванильно.
Я пытаюсь добавить небольшой код для пустого состояния списка, когда еще не добавлено ни одного избранного. Я хотел бы поместить UIView
в tableFooter
, а затем поставить UILabel
в центре этого представления. Я хочу, чтобы представление занимало все доступное пространство на экране.
Пока это то, что у меня есть:
self.tableView.tableFooterView = buildTableViewFooter()
Довольно очевидно.
func buildTableViewFooter() -> UIView {
let footer = UIView(frame: self.tableView.frame)
let label = UILabel()
label.text = "Use the heart icon to add favorites"
label.font = UIFont.italicSystemFont(ofSize: 21.0)
label.textColor = UIColor.lightGray
label.textAlignment = .center
label.numberOfLines = 0
let centerHorizontalConstraint = NSLayoutConstraint(
item: label,
attribute: .centerX,
relatedBy: .equal,
toItem: footer,
attribute: .centerX,
multiplier: 1,
constant: 0
)
footer.addSubview(label)
footer.addConstraints([
centerHorizontalConstraint,
])
return footer
}
Когда я запускаю приложение, я могу сказать, что мой метод запускается, и представление успешно создается. Однако я нигде не вижу текст на экране. LayoutConstraints
движок пытается быть полезным, но я не совсем уверен, что он пытается мне сказать:
[LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSAutoresizingMaskLayoutConstraint:0x60400028a9b0 h=--& v=--& UILabel:0x7fa8565417d0'Use the heart icon to add...'.midX == 0 (active)>",
"<NSLayoutConstraint:0x604000290f90 UILabel:0x7fa8565417d0'Use the heart icon to add...'.centerX == UIView:0x7fa856514e60.centerX (active)>",
"<NSAutoresizingMaskLayoutConstraint:0x6040002931f0 h=--& v=--& 'UIView-Encapsulated-Layout-Left' UIView:0x7fa856514e60.minX == 0 (active, names: '|':UITableView:0x7fa857889a00 )>",
"<NSLayoutConstraint:0x60400028a2d0 'UIView-Encapsulated-Layout-Width' UIView:0x7fa856514e60.width == 375 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x604000290f90 UILabel:0x7fa8565417d0'Use the heart icon to add...'.centerX == UIView:0x7fa856514e60.centerX (active)>
Большое спасибо!