ContentViews Subview 在 UIScrollView iOS 中没有动态改变高度

Posted

技术标签:

【中文标题】ContentViews Subview 在 UIScrollView iOS 中没有动态改变高度【英文标题】:ContentViews Subview not changing height dynamically in UIScrollView iOS 【发布时间】:2018-06-20 07:41:55 【问题描述】:

我有一个 UIScrollView 持有一个 ContentView,该 ContentView 持有其他可互换的 UIView。 可以显示多个 UIView,但是其中一个 UIView 具有动态内容,因此如果单击按钮会更改其高度,也可以缩回。

结构如下 - UIScrollView -> ContentView(UIView) -> UIView :

我无法正确设置自动布局锚点,当 UIView 更改高度(单击按钮)时,内容大小不会改变。所以我可以滚动查看内容的增长,但它不再可点击,额外的增长高度与不可点击的高度相同(ContentView 没有改变它的高度)

当前设置:

滚动视图: 锚定在 0 周围的父视图

ContentView:锚定在 0 以滚动查看。绑定到父视图的高度和宽度。

UIViews: 锚定在 0 到 ContentView 周围。


有什么想法可以改变来解决这个问题吗?

旁注:我不会反对删除 ContentView,但无论哪种方式都无法使其正常工作。

【问题讨论】:

内容视图不应具有与其父视图相等的高度约束... @AndréSlotta 这对我来说没有意义,但这就是很多教程对滚动视图中的自动布局所做的。我等于它的高度是多少?我尝试了恒定的高度,但没有奏效 内容视图没有得到任何明确的高度限制。相反,您必须确保内容视图中的所有视图都具有从内容视图的最顶部到最底部的有效约束,以便它可以计算自己的大小。 @AndréSlotta 感谢您的帮助。内容视图中的视图是 xibs,我无法获得的唯一约束是 xib(s) 的最后一个视图元素(例如 uibutton)和实际 xib 的底部之间。似乎不允许我,使整个视图变得怪异。但会尝试专注于此,看看是否能解决任何问题 @AndréSlotta 非常感谢 - 我搞定了。 xib 中的“完整”高度约束是缺失的部分。 【参考方案1】:

我已经按照你的设置设置好了。

Scrollview-> Content view-> subview1
                           |-> subview2
                              |-> btn
                              |-> lbl

我给出了以下限制...

对于 scrollview,我为其父视图指定了顶部、底部、前导和尾部约束。

对于内容视图(滚动视图内部),我为其滚动视图设置了顶部、底部、前导和尾随约束。

对于 subview1(内容视图内部),我为内容视图提供了顶部、前导、尾随和高度约束。

对于 subview2(在内容视图内部和 subview1 下方),我为内容视图提供了顶部、底部、前导和尾随约束。

对于 label (inside subview2),我已经给 subview2 提供了顶部、底部、前导和尾随约束。

对于 按钮(在 subview2 内),我为 subview2 提供了尾随和顶部约束。

看图。

最终输出:

【讨论】:

谢谢@Mahendra GP。我相信你的解决方案会奏效。但我能够从 AndréSlotta 在 cmets 上提到的内容中弄清楚。 @cfl 这个人花时间给你一个详细的答案。无论您是否认为自己已经弄清楚了,这是第一个包含很多细节的正确答案,因此应该正确标记。否则,诸如回答者之类的人不会花时间启动 Xcode 并为您构建答案,只是说我想通了。如果是这种情况,您应该提供答案。 @agibson007,感谢您对我的努力表示赞赏。 @agibson007 我不确定该怎么做,因为 Andre' 在我看到这个回复之前给了我我需要的答案,我无法将他标记为正确,因为它只是 cmets。 Mahendra GP 我非常感谢您的努力,您的回答很有价值,但不会解决我正在努力解决的所有问题,这是我缺少的高度限制。如果子视图同时显示,这将解决问题,在我的情况下它们是可互换的。 @cfl 没问题。我很高兴能帮到你。我是来帮助像你这样的人的。所以我不介意你不标记这个答案,它可能对其他人也有用。

以上是关于ContentViews Subview 在 UIScrollView iOS 中没有动态改变高度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UISilder 在 SubView 中添加和删除 UIButtons?

UI导航栏项目

将 Subview 添加到 self.tableView.tableHeaderView 不起作用

Android:代码设置UI

为啥 Button SubView 不会在 swift 4 中回到后面?

为啥要在主线程操作UI