在UITableViewCell和UITableView之间添加NSLayoutContraint

时间:2016-08-22 17:31:10

标签: ios swift uitableview nslayoutconstraint

所以,我想添加一个约束,强制每个单元格的最大高度小于或等于UITableView高度的2/3。

我怎样才能做到这一点?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell中添加约束不是一种选择,因为单元格不在UITableView中,所以它抱怨它们没有共同的超级视图。

基本上,我如何将UITableViewCellUITableViewNSLayoutContraint相关联?

1 个答案:

答案 0 :(得分:2)

嗯,你不能这样做。你可以做的是获取tableview的高度,然后在你的单元格上添加一个高度约束。因此,在接口构建器中为您的单元格添加一个高度约束并将其设置为一个方便的值(只是为了查看表中的内容,它将从代码更新)。然后在代码中添加该约束的引用。然后更新约束的值:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cellidentifier", forIndexPath: indexPath) as! YourCustomCell
    cell.heightConstraint.constant =  2.0 * tableview.frame.size.height / 3.0
}

如果您使用的是动态大小的单元格。否则你可以覆盖:func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat并返回你想要的大小。