如何为在 运行 时间计算的可变高度设置布局约束?
How to set layout constraints for variable hight calculated at run time?
我有一个 UIView,它有 3 个 UIView 作为它的子视图。我已将这些子视图的布局约束设置为固定纵横比。即,如果屏幕尺寸发生变化,它们的宽度会发生变化,但宽高比将始终保持不变。
现在我还使 UIView 的宽度(屏幕截图中显示的红色)随着屏幕尺寸的变化而变化。
但我正在努力限制这种观点的高度。我想要的是它的高度应该根据它里面的子视图的总高度来设置。
因为如果屏幕宽度改变,子视图的高度也会改变,因为我已经固定了它们的纵横比。
截至目前,我已将红色超级视图的高度固定。
但我希望它根据其中所有子视图的总高度而变化。
这是我的 viewcontroller 的屏幕截图及其预览。
正如你所看到的,由于红色超级视图的高度固定,还剩下一些 space。
到目前为止我添加的约束的详细信息如下。
主红色 SuperView
**第一个(顶部)、第二个(中间)、第三个(底部)子视图分别为**
如果您还没有为红色视图的高度限制添加一个出口。
如果您在 viewDidLoad 中执行此操作,请在控制器视图中调用 layouIfNeeded。
调用每个子视图、setNeedUpdateConstraints 和 layoutIfNeeded。
然后计算你想要的红色视图的高度(我会做 3*subview.frame.size.height + topPadding + bottomPadding)并将红色视图的高度 xconstraint 常量设置为此。
在红色视图上调用 setNeedUpdateConstraints 和 layoutIfNeeded。
你可以从第三个视图添加一个底部约束到它的父视图,然后你必须删除父视图的固定高度约束。
在所有分辨率下支持相同的行为。您需要按如下方式设置布局。
红景
UIView 顶部
UIView中
UIView 底部
希望对您有所帮助。
我有一个 UIView,它有 3 个 UIView 作为它的子视图。我已将这些子视图的布局约束设置为固定纵横比。即,如果屏幕尺寸发生变化,它们的宽度会发生变化,但宽高比将始终保持不变。
现在我还使 UIView 的宽度(屏幕截图中显示的红色)随着屏幕尺寸的变化而变化。 但我正在努力限制这种观点的高度。我想要的是它的高度应该根据它里面的子视图的总高度来设置。
因为如果屏幕宽度改变,子视图的高度也会改变,因为我已经固定了它们的纵横比。
截至目前,我已将红色超级视图的高度固定。 但我希望它根据其中所有子视图的总高度而变化。
这是我的 viewcontroller 的屏幕截图及其预览。
正如你所看到的,由于红色超级视图的高度固定,还剩下一些 space。
到目前为止我添加的约束的详细信息如下。
主红色 SuperView
**第一个(顶部)、第二个(中间)、第三个(底部)子视图分别为**
如果您还没有为红色视图的高度限制添加一个出口。
如果您在 viewDidLoad 中执行此操作,请在控制器视图中调用 layouIfNeeded。
调用每个子视图、setNeedUpdateConstraints 和 layoutIfNeeded。
然后计算你想要的红色视图的高度(我会做 3*subview.frame.size.height + topPadding + bottomPadding)并将红色视图的高度 xconstraint 常量设置为此。
在红色视图上调用 setNeedUpdateConstraints 和 layoutIfNeeded。
你可以从第三个视图添加一个底部约束到它的父视图,然后你必须删除父视图的固定高度约束。
在所有分辨率下支持相同的行为。您需要按如下方式设置布局。
红景
UIView 顶部
UIView中
UIView 底部
希望对您有所帮助。