如何以编程方式将自定义 UIView 添加到 UIScrollView 之上的 Stackview?

Posted

技术标签:

【中文标题】如何以编程方式将自定义 UIView 添加到 UIScrollView 之上的 Stackview?【英文标题】:How to add custom UIView to Stackview on top of UIScrollView programmatically? 【发布时间】:2020-12-10 11:49:51 【问题描述】:

我有一个 ViewController,它有一个 UIScrollView,上面有一个垂直的 UIStackView。 如果我通过界面生成器将 UIView 添加到具有高度约束的堆栈视图中,一切正常。例如 3 个高度为 600 像素的视图。如果我运行该应用程序,我可以毫无问题地滚动并查看所有三个添加的视图。堆栈视图的 工作正常。

如果我尝试使用带有 addArrangedSubView 槽代码的代码向堆栈视图添加视图,我可以看到如果我“强制”向下滚动,我添加的第一个视图,但不是其他两个。是否为添加的视图设置高度约束无关紧要,是否为自定义视图设置 intrinsicContentSize 也无关紧要。

添加槽代码时如何让滚动视图扩大滚动区域。 ?

谢谢:)

【问题讨论】:

请提供您的具体代码段,以便人们更好地帮助您! 在添加排列好的子视图后,尝试将UIScrollView contentSize 更新为scrollView.contentSize = CGSize(width: <your-width>, height: <your-height>) 您需要提供更多信息。您是否尝试通过代码添加滚动视图、堆栈视图和图像视图?或者,您是否在 Storyboard 中添加了带有空堆栈视图的滚动视图?如果是这样,您对堆栈视图有什么限制?或者,您是否只有 Storyboard 中的滚动视图? 【参考方案1】:

在缺乏更多信息的情况下只是猜测:

这个问题可能与在滚动视图和它的子视图堆栈视图之间设置约束的方式有关。

您应该添加以下约束:

将堆栈视图边缘(顶部、前导、尾随、底部)修复为滚动视图 在堆栈视图和滚动视图之间设置宽度约束 设置堆栈视图和滚动视图之间的高度限制,将其优先级设置为低(250)

如需了解更多信息,请阅读“使用自动布局设置 UIStackView”,例如此处: https://medium.com/@pradeep_chauhan/how-to-configure-a-uiscrollview-with-auto-layout-in-interface-builder-218dcb4022d7

如果不起作用,请提供您的 Interface Builder 设置的相关代码和屏幕截图。

【讨论】:

以上是关于如何以编程方式将自定义 UIView 添加到 UIScrollView 之上的 Stackview?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式使用堆栈视图

将自定义 UIView 添加到 TableViewCell

以编程方式将自定义范围添加到Azure B2C

android以编程方式将自定义按钮添加到布局

以编程方式向 UIView 添加约束

是否可以将自定义交互式 UI 元素添加到 EditText?