如何通过向滚动器添加组件来使滚动器内的视图自动调整大小? - 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 导致滚动条上的内容始终保持与运行前相同。
我有一个滚动条,里面有一个名为 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 导致滚动条上的内容始终保持与运行前相同。