以编程方式添加约束反向工作
Pogramatically added constraint works in reverse
添加以下底部约束并将常量设置为 -100 似乎与我在 Storyboard 的约束中添加该常量时完全相反。
具体来说,这会将视图推到控制器底部上方 100 个单位,而预期的行为是使其向下移动 100 个单位。我很可能犯了一个非常愚蠢的错误,但我现在看不到它。
func setUp(parentController: UIViewController){
self.parentController = parentController;
self.translatesAutoresizingMaskIntoConstraints = false
self.leftAnchor.constraint(equalTo: parentController.view.leftAnchor).isActive = true
self.rightAnchor.constraint(equalTo: parentController.view.rightAnchor).isActive = true
self.heightAnchor.constraint(equalToConstant: pullUpViewHeight).isActive = true
self.pullUpViewBottomCSTR = self.bottomAnchor.constraint(equalTo: parentController.view.bottomAnchor)
self.pullUpViewBottomCSTR!.isActive = true;
self.pullUpViewBottomCSTR!.constant = -100
}
感谢您抽出宝贵时间。
始终取决于参与观点/主播的顺序。在设置约束时切换 parentController.view.bottomAnchor
和 self.bottomAnchor
就可以了(因为你想要实现的是 parentController
的视图底部等于视图的底部减 100 分)。
self.pullUpViewBottomCSTR = parentController.view.bottomAnchor.constraint(equalTo: self.bottomAnchor)
您可以在创建约束时立即设置常量 btw:
self.pullUpViewBottomCSTR = parentController.view.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -100)
我总是感到困惑,我是否在编写约束时交换视图是否重要。答案是,有时重要,有时不重要。
总的来说:
假设您有 ViewA 和 ViewB,并使用 0
在它们之间设置约束。它们粘在一起。对于这种情况,约束视图的顺序无关紧要。
ViewA & ViewB,你用20
在它们之间设置了约束。它们不是粘在一起的。他们之间有一些space。你是想让ViewA站稳而move/pushViewB还是想让ViewB站稳让ViewA动起来?因此,向其添加约束很重要。
如果它第一次不起作用,那么我只需切换约束并将其添加到另一个视图,然后它就可以正常工作了。
添加以下底部约束并将常量设置为 -100 似乎与我在 Storyboard 的约束中添加该常量时完全相反。
具体来说,这会将视图推到控制器底部上方 100 个单位,而预期的行为是使其向下移动 100 个单位。我很可能犯了一个非常愚蠢的错误,但我现在看不到它。
func setUp(parentController: UIViewController){
self.parentController = parentController;
self.translatesAutoresizingMaskIntoConstraints = false
self.leftAnchor.constraint(equalTo: parentController.view.leftAnchor).isActive = true
self.rightAnchor.constraint(equalTo: parentController.view.rightAnchor).isActive = true
self.heightAnchor.constraint(equalToConstant: pullUpViewHeight).isActive = true
self.pullUpViewBottomCSTR = self.bottomAnchor.constraint(equalTo: parentController.view.bottomAnchor)
self.pullUpViewBottomCSTR!.isActive = true;
self.pullUpViewBottomCSTR!.constant = -100
}
感谢您抽出宝贵时间。
始终取决于参与观点/主播的顺序。在设置约束时切换 parentController.view.bottomAnchor
和 self.bottomAnchor
就可以了(因为你想要实现的是 parentController
的视图底部等于视图的底部减 100 分)。
self.pullUpViewBottomCSTR = parentController.view.bottomAnchor.constraint(equalTo: self.bottomAnchor)
您可以在创建约束时立即设置常量 btw:
self.pullUpViewBottomCSTR = parentController.view.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -100)
我总是感到困惑,我是否在编写约束时交换视图是否重要。答案是,有时重要,有时不重要。
总的来说:
假设您有 ViewA 和 ViewB,并使用 0
在它们之间设置约束。它们粘在一起。对于这种情况,约束视图的顺序无关紧要。
ViewA & ViewB,你用20
在它们之间设置了约束。它们不是粘在一起的。他们之间有一些space。你是想让ViewA站稳而move/pushViewB还是想让ViewB站稳让ViewA动起来?因此,向其添加约束很重要。
如果它第一次不起作用,那么我只需切换约束并将其添加到另一个视图,然后它就可以正常工作了。