我在动态更新顶级约束时面临一个问题。
我在其xib文件中通过 viewcontroller1 视图添加了一个subview1,并且我已将topview1作为 65 提供给topview1并为其创建了一个插座。
现在我在 viewcontroller2 上添加了 viewcontroller1 视图。添加之后,我试图将约束的常量值更新为108.但它没有得到反映。
在viewcontroller1中我正在做
for i in range(1,3):
print(i)
str1="onestring";
str3="thirdstring";
str=str1+str(i)+str3;
print(str);
知道为什么没有反映出来吗?
答案 0 :(得分:0)
您需要再次布局视图。
self.view.layoutIfNeeded()
答案 1 :(得分:0)
试试这个:
self.topErrorViewConstarints.constant = 108
self.view.setNeedsUpdateConstraints()
self.view.layoutIfNeeded()
它应该工作。如果没有,那么你在其他地方犯了错误。
答案 2 :(得分:0)
我找到问题的解决方案,所以在这里添加答案,以便它可以帮助任何人
答案 3 :(得分:0)
那不是updateConstraints()
应该如何运作的。
当然,您可以修改任何约束,然后像这样更新布局:
self.topErrorViewConstarints.constant = 108
self.view.layoutIfNeeded()
但是如果你想实现updateConstraints()
,你需要以下内容:
// Call when you need to update your custom View
self.view.setNeedsUpdateConstraints()
然后在View
内部覆盖将由系统自动调用的函数:
override func updateConstraints() {
super.updateConstraints()
topErrorViewConstarints.constant = currentTopErrorConstraint()
}
因此,updateConstraints()
更适合内部布局的自定义视图,您不希望从外部进行修改。此外,当您需要一次更新许多约束时,它会很好。