以编程方式固定视图组件会产生错误

时间:2019-07-19 19:07:48

标签: swift

我在屏幕上有2个按钮,下面的一个锚定到视图的底部锚点,上面的一个锚定到下部按钮的顶部锚点。但是,这会引发错误“无法使用锚点激活约束,因为它们没有共同的祖先。约束或其锚点是否引用了不同视图层次结构中的项?这是非法的。”

我已经将两个按钮都添加到了视图(view.addSubView)并设置了translatesAutoresizingMaskIntoConstraints = false,没有帮助。

view.addSubview(topButton)
topButton.centerXAnchor.constraint(equalTo:         view.centerXAnchor, constant: 0).isActive = true
topButton.heightAnchor.constraint(equalToConstant: 60).isActive = true
topButton.widthAnchor.constraint(equalToConstant: 180).isActive = true
topButton.bottomAnchor.constraint(equalTo:  lowerButton.topAnchor, constant: 120).isActive = true

view.addSubview(lowerButton)
lowerButton.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: 0).isActive = true
lowerButton.heightAnchor.constraint(equalToConstant: 60).isActive = true
lowerButton.widthAnchor.constraint(equalToConstant: 220).isActive = true
lowerButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -50).isActive = true

我想要发生的是将下部按钮固定在视图的底部锚点上,将顶部按钮的底部锚点固定在下部按钮的顶部锚点上

1 个答案:

答案 0 :(得分:1)

您要添加涉及lowerButton的约束,然后才能将其实际添加到视图层次结构中。只需将view.addSubview(lowerButton)移动到添加topButton下方的右侧即可。