使用 layoutAnchor 填充超级视图

Fill super view using layoutAnchor

我有一个奇怪的问题,因为我无法使用布局锚点填充超级视图的整个区域

这是我来自自定义 UIView 的代码 class:

   private func setupTableView() {
            addSubview(tableView)
            tableView.translatesAutoresizingMaskIntoConstraints = false

            let margins = layoutMarginsGuide

            let trailingAnchor = tableView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
            let leadingAnchor = tableView.leadingAnchor.constraint(equalTo: margins.leadingAnchor)
            let topAnchor = tableView.topAnchor.constraint(equalTo: margins.topAnchor)
            let bottomAnchor = tableView.bottomAnchor.constraint(equalTo: margins.bottomAnchor)

            NSLayoutConstraint.activate([trailingAnchor, leadingAnchor, topAnchor, bottomAnchor])
}

结果我在左侧和右侧网站上得到了奇怪的边距:

您正在布置 tableView 相对于 layoutMarginsGuide 的边距。如果你想让它到达你的 UIView 的边缘,那么你需要使用 UIView:

的锚点
private func setupTableView() {
    addSubview(tableView)
    tableView.translatesAutoresizingMaskIntoConstraints = false

    let trailingAnchor = tableView.trailingAnchor.constraint(equalTo: trailingAnchor)
    let leadingAnchor = tableView.leadingAnchor.constraint(equalTo: leadingAnchor)
    let topAnchor = tableView.topAnchor.constraint(equalTo: topAnchor)
    let bottomAnchor = tableView.bottomAnchor.constraint(equalTo: bottomAnchor)

    NSLayoutConstraint.activate([trailingAnchor, leadingAnchor, topAnchor, bottomAnchor])
}