2

这就是我正在尝试做的...

我有一个视图控制器需要根据某些数据的存在动态显示不同的子视图。

这是一个简单的模型。每个彩色块代表一个独特的子视图

简单的样机

有时绿色块需要在顶部,有时绿色块根本不会显示,有时浅蓝色块会有所不同,等等。

每个子视图都有交互元素,所以我一直在创建和添加它们,如下所示:

  1. 定义一个新的视图控制器
  2. 定义其观点
  3. 调用addChildViewControllerdidMoveToParentViewController
  4. 呼吁addSubview_myNewViewController.view
  5. 使用 SnapKit 进行自动布局约束来定位视图

我想过渡到,UIStackView因为它似乎是这个视图的一个很好的支持系统,因为我需要做的就是堆叠它的子视图。在尝试添加具有自己内部自动布局约束的子视图时,我看到许多冲突的约束错误和意外的视图框架。

问题

我是否通过在一个视图控制器的视图中嵌入 4-6 个视图控制器的视图来设置自己的失败?

另外,如何在不看到许多破坏性约束的情况下提供添加的视图属性,例如最小高度或内容大小UIStackView?(所以它们可以堆叠,但其中一个是 400 高,另一个是 200 高)

4

1 回答 1

6

回答

您绝对可以使用UIContainerViewsUIStackViewsand结合使用来完成此操作UIScrollViews,这是一个复杂的设置,因此这里有一个入门项目可以帮助您入门:

https://github.com/Rnorback/ScrollingStackView

这是该项目的样子:

在此处输入图像描述

您希望容器具有不同的尺寸。为此,只需使用 Autolayout 向容器添加高度约束。如果你想改变滚动的高度。然后你需要改变UIStackView.

简要说明

创建此设置时,您必须确保UIStackView distribution设置保持填充状态。这样你就可以在 UIContainerViews 上设置高度限制。

在 a 中设置任何内容时,UIScrollView您必须确保对象被固定到滚动视图的边缘并具有定义的宽度和高度,否则滚动视图将引发错误。我认为它就像滚动视图试图压入内容视图的所有侧面,如果有任何一侧给出,滚动视图将无法正确显示它。

希望这可以帮助。

于 2015-10-07T18:11:38.003 回答