我试图将我的UITableView放置在安全区域内,但是它似乎没有起作用,我也不知道为什么。我试图以编程方式执行此操作。
class MenuTableViewController: UITableViewController{
var margin: UILayoutGuide!
var tableDataSource: [userFolderObject]!
let cellId = "cellId"
override func viewDidLoad() {
super.viewDidLoad()
setup()
}
private func setup(){
margin = view.layoutMarginsGuide
tableDataSource = MockData.UITableDateSource
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: margin.topAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: margin.bottomAnchor).isActive = true
tableView.leadingAnchor.constraint(equalTo: margin.leadingAnchor).isActive = true
tableView.trailingAnchor.constraint(equalTo: margin.trailingAnchor).isActive = true
/* I have also tried the below code
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
tableView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
tableView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
*/
tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellId)
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let label = UILabel()
label.backgroundColor = UIColor.lightGray
if section == 0{
label.text = "Search PubMed"
}else{
label.text = "My Folders"
}
return label
}
}
答案 0 :(得分:1)
首先,删除所有试图弄乱表格视图边距的设置代码。默认情况下,这一切都是在UITableViewController
中完成的。
由于您的问题仅在于自定义节标题视图的布局,因此您需要修复实现这些视图的方式。
就像单元格一样,您应该使用可重复使用的页眉/页脚视图,并且页眉/页脚视图应扩展UITableViewHeaderFooterView
。默认情况下,这将确保适当的边距,并且已经提供了可以设置的标准textLabel
。无需创建自己的UILabel
。
如UITableViewHeaderFooterView
的文档中所示,您应该注册一个类。然后,在viewForHeader
中,应该使标题视图出队列,然后根据需要设置其textLabel
。
如果您实际上只需要一个普通的旧节标签,则不要实现viewForHeader
。而是实施titleForHeader
。简单得多。