2015-05-29 69 views
0

我有一个UIView 3 UIViews作为它的子视图。我已将这些子视图的布局约束设置为固定高宽比。即如果屏幕尺寸改变,它们的宽度将会改变,但宽高比将始终相同。如何设置运行时计算的变量高度的布局约束?

现在我也已经使UIView的宽度(屏幕截图中显示的红色)随着屏幕尺寸的变化而变化。 但我正在努力限制这个视图的高度。我想要的是它的高度应该根据它里面的子视图的总高度来设置。

因为如果屏幕宽度发生变化,子视图的高度会发生变化,因为我已经使其纵横比保持不变。

截至目前,我已经使红色超级观点的高度固定。 但我希望它是根据里面的所有子视图的总高度变化。

这是我的viewcontroller和它的预览的屏幕截图。

enter image description here

正如你可以看到有是因为红色超级鉴于固定高度的剩余一些空间。

到目前为止我添加的约束条件如下。

主力红军的SuperView

Main Red SuperView

** 1日(上),第2(中),3日(下)子视图分别**

enter image description here

+0

正如@Bannings在他的回答中所说的,删除红色视图上的高度约束,并简单地为第三个视图添加底部约束到红色视图。你与8 ^)的距离太近了。 –

回答

0

支持所有分辨率下的相同行为。您需要按如下设置布局。

红查看 enter image description here

的UIView顶部

enter image description here

的UIView中东

enter image description here

UIView的底部

enter image description here

希望这有助于你。

+0

@DemonSOCKET,如果您对我的回答满意,您可以加倍努力吗?我知道这不是要问你的好东西,但依然如此。 –

1
  1. 如果您尚未完成红色视图的高度限制,请添加一个插座。

  2. 如果您在viewDidLoad中执行此操作,请在控制器视图中调用layouIfNeeded。

  3. 调用每个子视图,setNeedUpdateConstraints和layoutIfNeeded。

  4. 然后计算你想要的红色视图的高度(我会做3 * subview.frame.size.height + topPadding + bottomPadding),并设置红色视图的高度xconstraint常量。

  5. 在红色视图中调用setNeedUpdateConstraints和layoutIfNeeded。

3

您可以从第3个视图添加底部约束到其超级视图,然后您必须移除超级视图的固定高度约束。

相关问题