【问题标题】:How to set an empty UIStackView inside a UIScrollView so that i can fill it on runtime?如何在 UIScrollView 中设置一个空的 UIStackView 以便我可以在运行时填充它?
【发布时间】:2019-09-13 00:23:59
【问题描述】:

我正在尝试在 UIScrollView 内设置一个空的垂直 UIStackView,以便我可以在运行时动态填充 UIStackView

我尝试了苹果here 提供的解决方案,但是当我这样做时,自动布局工具告诉我缺少 Y 位置或 UIStackView 高度的约束。 我的 UIScrollView 和示例中的唯一区别是我没有在 UIStackView 内添加按钮。

当我在运行时填充 UIStackView 时,日志说它必须打破一些约束,然后 UIScrollView 将屏幕一直填充到底部,将我在那里的其他视图推到视线之外。

这是实现我想要的正确方法吗?还是有其他解决办法?

编辑:

这就是我所拥有的,徽标约束只是相对于自身的纵横比

【问题讨论】:

  • 请展示你到目前为止所做的尝试。
  • @AndréSlotta 我刚刚添加了它们
  • 我设置了一个示例项目,一切都按预期工作。您可以将其与您的设置进行比较:ibb.co/QHmRvkp.
  • 这真的很奇怪。我将删除所有内容并重新执行此操作,看看是否有效

标签: ios xcode uiscrollview autolayout uistackview


【解决方案1】:

设置您拥有的约束,但没有滚动视图中的空堆栈视图。

下一步:

  • 在滚动视图中添加UIStackView
  • 将堆栈视图的所有 4 个面都限制为滚动视图
  • 将堆栈视图宽度限制为等于滚动视图宽度
  • 将堆栈视图高度限制为等于滚动视图高度

IB 应显示满足所有约束。

然后 - 这是关键 - 编辑堆栈视图的 Height 约束并将其设置为占位符:

现在将在构建时删除此高度限制。您通过代码添加为arrangedSubviews 的任何元素都将确定堆栈视图的高度,进而定义垂直可滚动区域(.contentSize)--- 全部由自动布局处理。

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多