使用自定义XIB时UIStackView失去约束

时间:2018-07-20 11:33:26

标签: ios swift

我正在尝试将视图动态添加到UIStackView

我有一个XIB,其中有一个全屏UIStackView。然后,我有一些视图-标签和文本字段/文本视图。

这里的想法是,我有一个管理这些单独视图的类,并且该类具有用于布局的自己的XIB文件。

因此,处理最外部UIStackView的类将从各个类中获取布局,并将其作为子视图添加到UIStackView中。

尝试执行此操作时,视图将被压缩并且与原始约束不符。

我可以提供代码,但我将解释约束。

外部UIStackView刚好被拉伸为全屏,分布填充和间距相等。

“内部”视图的示例为标签。我有一个单独的XIB文件,其中包含一个UIView,然后包含一个Label。标签固定在UIView的中心。

我认为问题在于将自定义XIB添加到现有的UIStackView中。我不确定我需要/提供多少信息,但我怀疑我缺少某些东西,可能有人会立即发现所提供的信息。

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

UIStackView完全按照您的要求执行。如果设置了约束,以便UIStackView可以填充整个屏幕,那么您需要提供内容,即当它在屏幕上等分时,具有预期的布局,插入的每个视图都将被调整大小以具有相同的大小。 / p>

如果您不知道将要使用多少个视图,但是您需要每个视图在屏幕上采用各自的纵横比,则可以使用“按比例填充”选项。 UIStackView将添加每个视图的高度,然后划分其自身的高度,并将其按比例分配给每个视图。如果添加太多视图,这也会开始挤压您的视图。

为避免此类问题,您可能希望将UIStackView放在UIScrollView中。然后,您将优先级设置为非常低的约束,以将UIStackView的高度设置为0,因为在插入视图时,UIStackView的大小将自动调整为适合不同的视图。

祝你好运!