只有一个视图调整AutoLayout的大小

时间:2015-10-29 10:06:21

标签: ios autolayout

 NSLayoutConstraint *layouts1 = [NSLayoutConstraint constraintWithItem:_greenView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:_grayView attribute:NSLayoutAttributeWidth multiplier:3.0f constant:0.0f];
[self.view addConstraint:layouts1];

为什么这里只调整一个视图的大小?只有灰色视图调整大小而不管上述方法中的参数位置如何?

1 个答案:

答案 0 :(得分:0)

要更改已从故事板应用的运行时约束,您不需要在第一时间将其删除,然后应用包含修改后的值的新约束。您需要做的就是更改该约束的constant属性。

在您的情况下,为您通过故事板创建的IBOutlets个约束创建两个width,然后说greenViewWidthConstraintgrayViewWidthConstraint。使用下面提到的代码来更改特定约束。

greenViewWidthConstraitn.constant = <new value>;

现在分析代码中可能出现的问题。由于你没有在你的问题中提供太多代码,但我想要点亮几点。

  1. 您提到您删除了两个视图的width约束,并应用了您发布的新视图。这仅具有关于两个视图宽度的关系,即greenView.width = 3*grayView.width。但灰色视图本身并没有任何宽度(除非你提供了一些其他约束,这里没有提到)。这可能导致两个视图的宽度为0,并且可能是与其他约束冲突的原因。
  2. 您提到运行时存在一些布局问题,这些问题是由模糊/冲突的约束引起的,运行时会尝试通过破坏其中一些来渲染屏幕,您可能会看到调整后的帧或故事板中给出的视图。