使用layoutAnchor填充超级视图

时间:2017-07-09 09:31:07

标签: swift uiview autolayout ios-autolayout

我有奇怪的问题,因为我无法使用布局锚

填充整个超视图区域

这是我自定义UIView类的代码:

   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])
}

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

enter image description here

1 个答案:

答案 0 :(得分:3)

您正在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])
}