在 UIStackView 中以编程方式添加内容时的 UIScrollView 高度
UIScrollView height while adding content programmatically in UIStackView
我正在尝试创建一个包含 UIScrollView
的视图。此 UIScrollView
包含 3 UIViews
。最后一个包含另一个 UIStackView
我想在运行时填充。
这是故事板的图片:
但是当我在第二个 UIStackView
中在运行时添加内容时,ScrollView
的高度保持不变。
第二个 UIStackView
定义为第一个:
- 轴:垂直
- 对齐方式:填充
- 分布:等间距
然后我使用:
mStackView.addArrangedSubview(matProgress)
结果如下:
有什么方法可以让底部视图和滚动视图拉伸以适合内容。
如果您有 UIScrollView
并且子视图具有自动布局。以编程方式设置滚动视图的高度将拉伸内部视图以符合自动布局。
因此,您通过代码获取第三个视图的高度并将 UIScrollView 高度设置为 view1.height + view2.height + expectedThirdViewHeight.
布局可以使用自动布局和约束来完成。
重点是:
- 不不在任一 StackView
上设置高度限制
- 将 "Main" StackView
Distribution
设置为 Equal Spacing
- 将 "Main" StackView 的 Leading、Trailing、Top 和 Bottom 约束设置为其 Superview(即 ScrollView)
- 你做 还需要在 "Main" StackView 上设置宽度约束以控制水平 contentSize
唯一的怪癖是在启动时。如果底部/内部 StackView 中没有内容,它仍将 "exist" 在 Main StackView 中并占用 space。有一个技巧可以解决这个问题,但必须用代码完成。
您可以在此处查看工作示例:https://github.com/DonMag/StackyScrolly
我正在尝试创建一个包含 UIScrollView
的视图。此 UIScrollView
包含 3 UIViews
。最后一个包含另一个 UIStackView
我想在运行时填充。
这是故事板的图片:
但是当我在第二个 UIStackView
中在运行时添加内容时,ScrollView
的高度保持不变。
第二个 UIStackView
定义为第一个:
- 轴:垂直
- 对齐方式:填充
- 分布:等间距
然后我使用:
mStackView.addArrangedSubview(matProgress)
结果如下:
有什么方法可以让底部视图和滚动视图拉伸以适合内容。
如果您有 UIScrollView
并且子视图具有自动布局。以编程方式设置滚动视图的高度将拉伸内部视图以符合自动布局。
因此,您通过代码获取第三个视图的高度并将 UIScrollView 高度设置为 view1.height + view2.height + expectedThirdViewHeight.
布局可以使用自动布局和约束来完成。
重点是:
- 不不在任一 StackView 上设置高度限制
- 将 "Main" StackView
Distribution
设置为Equal Spacing
- 将 "Main" StackView 的 Leading、Trailing、Top 和 Bottom 约束设置为其 Superview(即 ScrollView)
- 你做 还需要在 "Main" StackView 上设置宽度约束以控制水平 contentSize
唯一的怪癖是在启动时。如果底部/内部 StackView 中没有内容,它仍将 "exist" 在 Main StackView 中并占用 space。有一个技巧可以解决这个问题,但必须用代码完成。
您可以在此处查看工作示例:https://github.com/DonMag/StackyScrolly