gpt4 book ai didi

Swift - 以编程方式将 TableView 放置在另一个具有约束的 View 下方

转载 作者:行者123 更新时间:2023-11-28 05:41:52 26 4
gpt4 key购买 nike

我正在使用 Swift 4.2。

我试图在另一个 View 下方获取一个表格 View ,例如 - 标签。

我想要的是这样的:

+----------------------------------------+
| label |
+----------------------------------------+

+----------------------------------------+
| |
| |
| |
| |
| tableView |
| |
| |
| |
| |
+----------------------------------------+

// label constraints
label.translatesAutoresizingMaskIntoConstraints = false
let label_Leading_Constraint = NSLayoutConstraint(item: label, attribute: NSLayoutConstraint.Attribute.leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.view, attribute: NSLayoutConstraint.Attribute.leading, multiplier: 1, constant: 0)
let label_Trailing_Constraint = NSLayoutConstraint(item: label, attribute: NSLayoutConstraint.Attribute.trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self.view, attribute: NSLayoutConstraint.Attribute.trailing, multiplier: 1, constant: 0)
let label_Top_Constraint = NSLayoutConstraint(item: label, attribute: NSLayoutConstraint.Attribute.top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: previous_label, attribute: NSLayoutConstraint.Attribute.bottom, multiplier: 1, constant: 10)
NSLayoutConstraint.activate([label_Leading_Constraint, label_Trailing_Constraint, label_Top_Constraint])


var tableView = UITableView()
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.dataSource = self
tableView.delegate = self
tableView.backgroundColor = UIColor.white

tableView.register(UITableViewCell.self, forCellReuseIdentifier: "mycell")

self.view.addSubview(tableView)

tableView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 20.0).isActive = true
tableView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 20.0).isActive = true
tableView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -20.0).isActive = true
tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -20.0).isActive = true

当我使用上面的代码时,显示了表格 View 。 tableview 约束相对于 ALL view (self.view) 这不是我想要的,因为我希望 tableview 出现在标签下方。

如果我将此代码更改为我想要的代码(表格 View 的顶部应该在标签 View 下方 20 处):

tableView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 20.0).isActive = true
tableView.topAnchor.constraint(equalTo: label.bottomAnchor, constant: 20).isActive = true
tableView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -20.0).isActive = true
tableView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -20.0).isActive = true

我在屏幕底部弄乱了标签 View ,并且根本没有显示表格 View 。

请不要建议类似这样的表格标题。你可以假设我在屏幕的顶部有更多的 View ,我只是希望 tableview 显示在它们下面。

另外,请不要推荐 Storyboard。我正在尝试以编程方式完成这一切。

我错过了什么?

谢谢!

最佳答案

我的猜测是您的 UILabel 约束设置不正确。

例如,如果您设置了 label.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true,这将导致您得到“困惑”的结果。

标签 anchor 应该是:

label.translatesAutoresizingMaskIntoConstraints = false      
label.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 20.0).isActive = true
label.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 20.0).isActive = true
label.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: -20.0).isActive = true

仅此而已

关于Swift - 以编程方式将 TableView 放置在另一个具有约束的 View 下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com