Не работают constraints при создание Header в TableView (UiView -> Label)?

uiview
swift
uilabel
swift5
tableview

#1

Здравствуйте.
Верстаю экран, новичок полный! Хочу сделать header, размещенный в TableView.
Создаю UiView - делаю его TableHeaderView, добавляю в него сабвью - мой label. Далее пытаюсь при помощи якорей выровнять. Хочу использовать именно anchor.constraint.

У меня заголовок наезжает на первую row в первой section и находится впритык к левому краю. Ничего не выходит!
Буду очень благодарна за помощь!

Ниже код:
class SettingsViewController: UIViewController {

@IBOutlet var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    
    let label = UILabel(frame: CGRect.zero)
    label.text = "Заголовок"

    label.font = UIFont.boldSystemFont(ofSize: 25)
    label.textAlignment = .left
    label.sizeToFit()
    
    let content = UIView()
    
    content.translatesAutoresizingMaskIntoConstraints = false
    
    self.tableView.tableHeaderView = content
    content.centerXAnchor.constraint(equalTo: self.tableView.centerXAnchor).isActive = true
    content.widthAnchor.constraint(equalTo: self.tableView.widthAnchor).isActive = true
    content.topAnchor.constraint(equalTo: self.tableView.topAnchor).isActive = true

    
    self.tableView.tableHeaderView?.layoutIfNeeded()
    content.addSubview(label)
    label.leftAnchor.constraint(equalTo: content.leftAnchor, constant: 10)
    label.topAnchor.constraint(equalTo: content.topAnchor, constant: 10)
    self.tableView.tableHeaderView = self.tableView.tableHeaderView

    tableView.sectionHeaderHeight = UITableView.automaticDimension
   
}

}


#2

Какой ожидаемый результат ? у table header view размер всегда будет на всю ширину main screen. Вы можете регулировать только высоту.

если у вас одна секция в table view используйте это:

func tableView( _ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { }

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { }


#3

У меня много несколько секций, в некоторых по несколько ячеек. Хедеры есть в каждой секции, кроме первой.

Мне именно нужно заголовок сделать. Эти функции использую для секций.


#4

создайте прозрачный view , назначьте его на tableheaderview. остальной контент расположите во вью с помощью констраинтов. А есть дизайн задачи ?


#6

этот интерфейс делается с nav large titles


#7

ну или как вы хотите

let label = UILabel()
let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 60)
view.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
label.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 12).isActive = true
label.topAnchor.constraint(equalTo: view.topAnchor, constant: 12).isActive = true
label.backgroundColor = .clear
label.textColor = UIColor.lightGray
label.font = UIFont.systemFont(ofSize: 30, weight: .bold)
label.numberOfLines = 1
label.textAlignment = .left
label.text = “Настройки”
tableView.tableHeaderView = view


#8

спасибо вам огромное! скажите, как можно с вами связаться, не нашла кнопки “личные сообщения”(((((


#9

зачем?) могу вк дать свой акк


#10

там на аватар и можно в лс слать