我正在尝试在表格视图的顶部添加叠加视图。它应该显示在单元格上方,并沿着它们滚动。
此叠加视图应具有固定的高度并跨越表视图的整个宽度,所有这些都使用自动布局约束进行布局。
我在以下锚点设置约束:
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
的右锚定义为与左锚点重合,这会导致我的子视图的宽度为零?
相反,如果我限制了我的视图控制器主视图的右侧锚点(表视图的超级视图),我得到了预期的结果。
答案 0 :(得分:1)
尝试设置 equalWidth 约束
equalwidth anchor subView.widthAnchor.constraintEqualToAnchor(tableView.widthAnchor).active = true
答案 1 :(得分:0)
我知道这很旧,但是您碰巧看到了translatesAutoresizingMaskIntoConstraints吗?这搞砸了我基于锚的自动布局。