无法将自动布局右锚定到UITableView?

时间:2017-04-04 04:34:36

标签: ios uitableview autolayout

我正在尝试在表格视图的顶部添加叠加视图。它应该显示在单元格上方,并沿着它们滚动。

此叠加视图应具有固定的高度并跨越表视图的整个宽度,所有这些都使用自动布局约束进行布局。

我在以下锚点设置约束:

let yPosition: CGFloat = 100.0
let fixedHeight: CGFloat = 10.0

subview.heightAnchor.constraint(equalToConstant: fixedHeight).isActive = true

subview.topAnchor.constraint(equalTo: tableView.topAnchor, constant: yPosition).isActive = true

subview.leftAnchor.constraint(equalTo: tableView.leftAnchor, constant: 0.0).isActive = true

subview.rightAnchor.constraint(equalTo: tableView.rightAnchor, constant: 0.0).isActive = true

但是,在运行时(由视图层次结构调试器显示),我的子视图的宽度为零。调试器还会显示约束存在,就像我设置它们一样。

如果我用宽度约束(例如)替换右锚定约束:

subview.widthAnchor.constraint(greaterThanOrEqualToConstant: 100.0).isActive = true

...然后以指定的宽度显示(但我需要它跨越表格视图的整个宽度)。

我缺少什么?

或许UITableView的右锚定义为与左锚点重合,这会导致我的子视图的宽度为零?

相反,如果我限制了我的视图控制器主视图的右侧锚点(表视图的超级视图),我得到了预期的结果。

2 个答案:

答案 0 :(得分:1)

尝试设置 equalWidth 约束

equalwidth anchor subView.widthAnchor.constraintEqualToAnchor(tableView.widthA‌​nchor).active = true

答案 1 :(得分:0)

我知道这很旧,但是您碰巧看到了translatesAutoresizingMaskIntoConstraints吗?这搞砸了我基于锚的自动布局。