添加约束后,模糊的可滚动内容高度错误仍然存​​在

Posted

技术标签:

【中文标题】添加约束后,模糊的可滚动内容高度错误仍然存​​在【英文标题】:Has ambiguous scrollable content height error still persist after adding constraints 【发布时间】:2015-08-07 10:28:28 【问题描述】:

这种类型的question 以前有人问过,但我在这里。

我有一个带有两个容器视图的 UIViewController,它们都嵌入了一个表格视图。

顶部的 tableview 是动态的,而底部的 tableview 是静态的。底部表格视图的单元格内有一个文本字段。因此,当您点击文本字段并出现键盘时,我想向上滚动所有内容。为此,我将两个容器视图都放在了滚动视图中。

我将滚动视图固定到所有四个侧面。我在顶部容器视图中添加了前导、顶部、拖尾约束以及水平中心约束(如果没有,我会得到一个模糊的可滚动内容 width 错误)。对于底部容器视图,我添加了前导、底部、尾随约束。还有两个容器视图之间的垂直空间限制。

但我仍然收到不明确的可滚动内容高度错误。我发现这个问题的answer 是为了确保你从上到下有足够的约束,我似乎都有。我不知道为什么我仍然有这个问题。这是我运行应用程序时的样子。

我还错过了什么吗?

Dropbox 链接到演示 Xcode 项目。

【问题讨论】:

【参考方案1】:

解决方案是将两个容器都嵌入到一个视图中:

然后将此视图的约束设置如下:

然后是上容器的约束:

然后降低容器的:

比例高度约束应如下所示:

上容器乘数为 0.6,下容器乘数为 0.4。

您的项目,已编辑:https://github.com/rshev/Example_EmbeddedTableViews

【讨论】:

谢谢 rshev。虽然它在纵向模式下效果很好,但不幸的是在横向模式下,它仍然覆盖了文本字段。 这不是故意的!下视图是滚动视图高度的 40%,在此配置中它将被键盘覆盖。您需要一种不同的方法来观察键盘通知事件并手动调整约束。【参考方案2】:

你有一个滚动视图,你必须提供高度约束。 将高度约束添加到您的普通表视图容器,并将高度约束添加到您的分组视图容器

【讨论】:

但这不会是不同屏幕方向和设备的问题吗? 要为所有方向和设备管理这些约束的值,请使用布局【参考方案3】:

我在这里看到的第一个问题是将多个视图直接放入滚动视图中。不要那样做,而是放置一个带有多个视图的单个视图(例如命名为 containerView),并以这种方式定义 containerView 子视图的约束,以便它们确定 containerView 的内容大小。这样,如果您希望您的 scrollView 仅垂直滚动,则所有 containerView 子视图的宽度必须等于 scrollview 宽度,并且它们应该从上到下放置以使 scrollView 垂直滚动

【讨论】:

以上是关于添加约束后,模糊的可滚动内容高度错误仍然存​​在的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 使用自动布局

根据内容的 UITextView 高度在 iOS 9 中是错误的

滚动后可拖动的jQuery UI不粘在网格上

滚动视图内的Android约束布局高度无效

带有 Angular Material 动态高度标签的可滚动内容元素

滚动视图中的内容随着导航菜单的高度值向下移动