NSLayoutConstraint *layouts1 = [NSLayoutConstraint constraintWithItem:_greenView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:_grayView attribute:NSLayoutAttributeWidth multiplier:3.0f constant:0.0f];
[self.view addConstraint:layouts1];
为什么这里只调整一个视图的大小?只有灰色视图调整大小而不管上述方法中的参数位置如何?
答案 0 :(得分:0)
要更改已从故事板应用的运行时约束,您不需要在第一时间将其删除,然后应用包含修改后的值的新约束。您需要做的就是更改该约束的constant
属性。
在您的情况下,为您通过故事板创建的IBOutlets
个约束创建两个width
,然后说greenViewWidthConstraint
和grayViewWidthConstraint
。使用下面提到的代码来更改特定约束。
greenViewWidthConstraitn.constant = <new value>;
现在分析代码中可能出现的问题。由于你没有在你的问题中提供太多代码,但我想要点亮几点。
width
约束,并应用了您发布的新视图。这仅具有关于两个视图宽度的关系,即greenView.width = 3*grayView.width
。但灰色视图本身并没有任何宽度(除非你提供了一些其他约束,这里没有提到)。这可能导致两个视图的宽度为0,并且可能是与其他约束冲突的原因。