Добавление начальных и конечных пробелов в uitableview дочернего класса, унаследованного от родительского класса программно с помощью swift
Я пытаюсь добавить начальные и конечные пробелы в табличное представление, встроенное в представление программно. Это табличное представление имеет ограничения, объявленные в родительском классе, я пытаюсь переопределить их в дочернем классе. Я делаю следующим образом
class TestTableView: BaseTableViewController{
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.lpBaseTableView.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.lpBaseTableView.contentSize.height)
self.lpBaseTableView.center = self.view.center
self.lpBaseTableView.translatesAutoresizingMaskIntoConstraints = false
self.lpBaseTableView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 16).isActive = true
self.lpBaseTableView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 16).isActive = true
}
}
После исследования нескольких ссылок из-за переполнения стека я использую приведенный выше код, но нет изменений в позиции табличного представления, как показано ниже на рисунке. Пожалуйста, помогите мне. Я новичок в Swift и iOS
2 ответа
Добавить ведущие и конечные ограничения несложно, просто задайте надлежащие константы относительно суперпредставления, а также задайте ограничения сверху и снизу. Рамка и центр не нужны, так как здесь вы используете автопрокладку.
lpBaseTableView = UITableView()
lpBaseTableView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(lpBaseTableView)
NSLayoutConstraint.activate([
lpBaseTableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 16),
lpBaseTableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -16),
lpBaseTableView.topAnchor.constraint(equalTo: view.topAnchor),
lpBaseTableView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
])
Вы можете попробовать с SnaKit
import SnapKit
lpBaseTableView.snp.makeConstraints { (make) in
make.center.equalTo(view)
make.left.equalTo(view.snp.left)
make.right.equalTo(view.snp.right)
Обратите внимание, что если есть также ограничения из раскадровки для одного и того же объекта, он не сможет работать должным образом