Избегайте липких заголовков при прокрутке таблицы с помощью Auto Layout - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время, когда содержимое таблицы прокручивается, headerLabel следует за прокруткой и придерживается вершины.Как можно избежать такого поведения с помощью Auto Layout?

var tableView: UITableView!

let headerLabel: UILabel = {
    let label = UILabel(frame: .zero)

    label.font = UIFont.boldSystemFont(ofSize: 34.0)
    label.textColor = .black
    label.textAlignment = .center

    return label
}()

override func viewDidLoad() {
    super.viewDidLoad()

    let barHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height

    tableView = UITableView(frame: CGRect(x: 0, y: barHeight, width: view.frame.width, height: view.frame.height - barHeight))
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "tableCell")
    tableView.dataSource = self
    tableView.delegate = self
    tableView.separatorStyle = .none

    view.addSubview(headerLabel)
    view.addSubview(tableView)

    headerLabel.snp.makeConstraints { (make) in
        make.top.equalTo(view).offset(35)
        make.width.equalToSuperview()
    }

    tableView.snp.makeConstraints { (make) in
        make.top.equalTo(headerLabel.snp.bottom)
        make.left.bottom.right.equalToSuperview()
    }
}

headerLabel должен прокручиваться с tableView и не должен выглядеть как липкий заголовок.

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

В настоящее время ваше табличное представление и ваша метка являются родственниками в представлении вашего UIViewController, что означает, что ваша метка не является частью табличного представления, поэтому она не будет прокручиваться вместе с ней.Вы можете добавить метку в UIView, установить ее ограничения и затем установить свойство tableHeaderView табличного представления.Вот пример кода с некоторыми жестко закодированными значениями:

    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.text = "some text"
    label.sizeToFit()

    let headerView = UIView()
    headerView.translatesAutoresizingMaskIntoConstraints = false
    headerView.addSubview(label)

    tableView.tableHeaderView = headerView

    headerView.centerXAnchor.constraint(equalTo: tableView.centerXAnchor).isActive = true
    headerView.heightAnchor.constraint(equalToConstant: 80).isActive = true
    headerView.widthAnchor.constraint(equalTo: tableView.widthAnchor).isActive = true

    label.leftAnchor.constraint(equalTo: headerView.leftAnchor, constant: 50).isActive = true

    tableView.tableHeaderView?.layoutIfNeeded()
0 голосов
/ 28 декабря 2018

Измените стиль просмотра таблицы с простого на сгруппированный.Ваш заголовок будет перемещаться с прокруткой ячейки таблицы.

enter image description here

...