如何通过向滚动器添加组件来使滚动器内的视图自动调整大小? - Swift 3

How to make views inside scrollers automatically resize by adding components to them? - Swift 3

我有一个滚动条,里面有一个名为 ContentView 的 UIView 元素。在 ContentView 内部,我有一个 StackView,其中充满了动态创建的按钮。我以编程方式将按钮添加到 StackView,还将每个按钮分配给 StackView:

self.stackView.addSubview(btn)

按钮出现在运行时,但它们不可点击,我诊断为是因为它们被添加到 ContentView 和 StackView 边界之外。我尝试使用:

self.stackViewButtons.autoresizingMask = UIViewAutoresizing.flexibleWidth
self.contentView.autoresizingMask = UIViewAutoresizing.flexibleWidth

但是 contentView 和 stackView 始终保持相同的大小。

编辑:

情节提要中的限制:

UIScrollView 有一个元素:ContentView,它有 4 个约束 - 顶部、底部、前导和尾随设置到 superView - UIScrollView。 (所有 4 个设置为 0)。也是从 ContentView 到 superView - UIScrollView 水平居中的垂直约束。 StackView 应该包含所有按钮 - 它有 4 个约束(顶部 - 13,底部 - 13,前导 - 10,尾随 - 10)设置为 superView,即 ContentView。

我在其他视图中的滚动在这些约束下工作得很好,但是我确切地知道我将拥有的按钮数量,所以我在情节提要中创建它们并在代码中更改它们的约束,而现在我必须创建他们从代码中。

好的,如果有人路过,this 对我帮助很大 - 向下滚动到动态堆栈视图。我正在使用自动布局,并且我正在向 stackView 动态添加按钮,我的错误是我正在使用

self.stackView.addSubview(btn)

而不是:

self.stackView.addArrangedSubview(btn)

使用 addSubview 导致滚动条上的内容始终保持与运行前相同。