如何获得 UITableView 约束?

Posted

技术标签:

【中文标题】如何获得 UITableView 约束?【英文标题】:How to get UITableView constraints? 【发布时间】:2017-02-13 14:18:53 【问题描述】:

我有一个带有约束的UITableView。当我尝试检索 UITableView 的约束时,它返回 0 个元素。有什么帮助吗?

self.tableView.constraints

【问题讨论】:

你在哪里打电话?在viewDidLoad()? 你想如何/在哪里使用它? 当用户执行删除行时。 【参考方案1】:

以编程方式检索约束不是一个好主意。

您可以使用constraintsAffectingLayout(for:) 获得影响视图的所有约束,但是,您可能会获得比预期更多的约束。

最好的解决方案是在添加给定约束时保存对给定约束的引用。如果您使用的是故事板或 xib,请为它们创建一个 IBOutlet

【讨论】:

【参考方案2】:

您需要获取表视图超级视图约束并将表视图检查为第一项或第二项。

for constraint in (self.tableView.superview?.constraints)!  
    if constraint.firstItem as! NSObject == self.tableView ||
    constraint.secondItem as! NSObject == self.tableView  
        // table view constraints
    

【讨论】:

【参考方案3】:

取决于应用约束的位置。 如果您在UIViewController 中有UITableView 并添加约束,则约束将应用于UIViewController 而不是UITableView

改用此代码:

self.tableView.superview?.constraints

【讨论】:

是的,我知道。但是,UITableViewCell 约束将在 UITableView 中。

以上是关于如何获得 UITableView 约束?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UITableView 滚动时会更新约束?

如何增加UITableView分隔符高度?

如何从应用程序委托访问 uitabbarcontroller 内的 uinavigationcontroller 内的 uitableview?

如何在同一个视图中呈现 UITableView 及其详细视图

UITableview如何一次只显示一个单元格

编辑第一个 UITextField 时,如何将 UITableView 滚动到第二个 UITextField?