无法将UITableView约束到安全区域

时间:2017-10-17 21:30:29

标签: ios autolayout

似乎无法向UITableView

添加约束

我想将" Align Top添加到:Safe Area"约束到表视图,因为如您所见,单元格似乎不在安全区域内:

如何约束表格视图以保持在安全区域的范围内?

2 个答案:

答案 0 :(得分:3)

似乎您使用UITableViewController。通过这种方式,您无法更改tableView的默认约束。您只能做一件事就是添加一个导航控制器。 (单击您的UITableViewController而不是显示器顶部:Editor-> Embed In-> Navigation Controller)

另一种方法是将UITableView添加到UIViewController。在这种情况下,您可以添加所需的任何约束。

通过以下代码查看。这可以帮助您弄清楚接下来应该做什么。

import UIKit

class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {

    var data: [String] = ["Cell 1", "Cell 2", "Cell"]
    var colors: [UIColor] = [.red, .green, .blue]

    @IBOutlet weak var tableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self
        tableView.reloadData()
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath)
        cell.textLabel?.text = data[indexPath.row]
        cell.contentView.backgroundColor = colors[indexPath.row]

        return cell
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

}

最后,你会得到类似于下面截图的内容。

P.S。别忘了在原型单元格中添加标识符。在我的例子中,标识符是" id"

TableView

这是所有Xcode项目的屏幕截图。

Xcode project

答案 1 :(得分:1)

我的解决方案是将UITableViewController更改为UIViewController,并向视图添加UITableView,然后添加顶部,底部,左侧和右侧约束。

请注意,在您将类更改为继承自UIViewController而不是UITableViewController

之前,您将遇到崩溃
@interface MyViewController : UITableViewController

@interface MyViewController : UIViewController

你显然还需要重新链接UITableView,并连接数据源和委托,如果你没有以编程方式进行