UIScrollView 将内容推离页面

Posted

技术标签:

【中文标题】UIScrollView 将内容推离页面【英文标题】:UIScrollView pushes content off the page 【发布时间】:2016-07-26 16:33:19 【问题描述】:

我正在使用 Xcode 7 和 Swift 2。

我的应用场景目前具有以下结构: 场景 -> 视图 -> 堆栈视图

问题是我的垂直空间已经用完了,所以我想把 Stack View 扔到一个 Scroll View 中。但是,当我这样做时,内容会被水平推离页面。我不知道为什么在没有滚动视图的情况下,所有内容都与屏幕齐平。我没有添加任何额外的约束。

有什么想法吗?

【问题讨论】:

你在滚动视图中添加了布局约束吗? 嗨,丹!我对所有四个角都做了“0”,并且未选中“限制到边距”,因为它在垂直方向上很长 我想这是你想看的。 ***.com/a/27227174/6535878 【参考方案1】:

滚动视图的全部意义在于它适合其内容并允许您滚动到它。因此,如果您不限制内容,它将采用自然想要的任何大小。

因此,基本上,您需要将内容的宽度限制为与滚动视图的宽度相同,以便它可以根据其内在要求垂直增长。即将滚动视图和堆栈视图的宽度设置为相等。

【讨论】:

我添加了一个约束,使 Stack View.width = width,看起来一样。我还将内容拥抱优先级设置为水平 1000,但它仍然被推离页面。我知道我可能应该提供更多信息,但我不确定有什么帮助【参考方案2】:

原来你首先需要一个内容视图(也就是普通的uiview),所以最终的结构是

视图 -> 滚动视图 -> 内容视图 -> 堆栈视图

现在是关键部分:您需要为 View 的 Content View 设置等宽约束,而不是 Scroll View。滚动视图并不关心您在 Xcode 中看到的布局的大小,因此您需要将滚动视图内部的所有内容都限制在滚动视图之外。堆栈视图的约束是内容视图的四个 0(我可能只是让堆栈视图完成内容视图的工作,但它可以工作,所以我现在不会弄乱它)

上面 Nick 提供的this link 的第 5 步给了我这个想法

【讨论】:

以上是关于UIScrollView 将内容推离页面的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 显示为零?

防止重叠的 UIScrollView 滚动

IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

获取 UIWebView 加载内容的高度

如何阻止翻转效果将其他元素推离它?

离子科尔多瓦键盘将离子页脚栏推离屏幕