有没有一种方法可以将UIScrollView嵌入UIStackView中?

时间:2019-07-13 17:00:00

标签: ios swift xcode uiscrollview uistackview

Xcode Storyboard: UIViewController Structure Xcode Storyboard: Inner UIScrollView Error Message

我正在使用具有以下结构的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内的UIHorizo​​ntalStackView中。

但是,我遇到了一个错误(如第二幅图像所示)。

-

1 个答案:

答案 0 :(得分:1)

您尚未为“内部滚动视图”中包含的“内部堆栈视图”提供任何约束。

您最可能希望的是“内部堆栈视图”具有与“内部滚动视图”相同的高度,但是没有宽度限制,允许您动态添加的按钮从左向右填充,然后在有水平按钮时水平滚动太多无法容纳。

所以:

enter image description here

在此图像中,您可以看到“内部堆栈视图”在所有4个侧面上都被限制为“内部滚动视图”,并且 被限制为宽度和高度:

ul

Inner Stack View.height = height Inner Stack View.width = width 是“内部滚动视图”的高度限制)

在这里看不到的是您实际上并不需要宽度限制-您希望堆栈视图“填充按钮”并在需要时水平延伸超过右边缘。

为此,请选择height = 100约束,并将其设置为Inner Stack View.width = width

enter image description here

这将使IB / Storyboard保持满意(满足所有必要的约束),但将为您提供运行时所需的布局灵活性。