我正在使用具有以下结构的ViewController:
-ViewController
-UIScrollView
-UIVerticalStackView
-UIImageView (414:367 aspect ratio)
-UILabel
-UIScrollView
-UIHorizontalStackView
-Dynamically added UIButtons
-UILabel
-UITextView
-UIButton
ViewController上的元素比屏幕上显示的要多,这就是为什么我希望能够垂直滚动这些元素。但是,这些元素之一将包含动态生成/添加的UIButton。因为UIButton的数量可能超过了屏幕的宽度,所以我希望将这些UIButton嵌入到UIScrollView中,该UIScrollView使用户可以在需要时水平滚动它们,因此使用内部UIScrollView。为了格式化,我将UIButtons添加到嵌套在内部UIScrollView内的UIHorizontalStackView中。
但是,我遇到了一个错误(如第二幅图像所示)。
-
答案 0 :(得分:1)
您尚未为“内部滚动视图”中包含的“内部堆栈视图”提供任何约束。
您最可能希望的是“内部堆栈视图”具有与“内部滚动视图”相同的高度,但是没有宽度限制,允许您动态添加的按钮从左向右填充,然后在有水平按钮时水平滚动太多无法容纳。
所以:
在此图像中,您可以看到“内部堆栈视图”在所有4个侧面上都被限制为“内部滚动视图”,并且 也 被限制为宽度和高度:
ul
(Inner Stack View.height = height
Inner Stack View.width = width
是“内部滚动视图”的高度限制)
在这里看不到的是您实际上并不需要宽度限制-您希望堆栈视图“填充按钮”并在需要时水平延伸超过右边缘。
为此,请选择height = 100
约束,并将其设置为Inner Stack View.width = width
:
这将使IB / Storyboard保持满意(满足所有必要的约束),但将为您提供运行时所需的布局灵活性。