如何使用自动布局修复 Xcode 11(iOS 12、iOS 13)中的 "Scrollable Content Size Ambiguity"

How to fix "Scrollable Content Size Ambiguity" in Xcode 11 (iOS 12, iOS 13) using Auto Layout

使用自动布局时,我无法在 Xcode 11 beta 的视图控制器中设置简单的 UIScrollView。我知道我必须将滚动视图限制在边缘,然后将滚动视图的宽度和高度设置为等于包含滚动视图的整个视图的宽度和高度。但是,当我尝试这样做时,我没有看到设置相等宽度和高度的选项。

当我从滚动视图右键单击并拖动到整个主视图时,我得到以下选项:

在其他视频中,有一个"Equal Widths"和"Equal Heights"选项我好像没有。

是我做错了什么,还是 Apple 改变了滚动视图在 Xcode 11 中的工作方式?

我也遇到了这个问题(Version 11.0 beta 3 (11M362v))。我通过首先在 xcode10 中设置布局然后在 xcode11 中设置布局 运行 解决了这个问题。目前还没有找到官方的说明,证明这是xcode11的问题,不过目前我估计是xcode11bate的问题。

我也遇到过这个问题。 找到了对我有帮助的好指南:

https://useyourloaf.com/blog/scroll-view-layouts-with-interface-builder/

基本上你需要的是 9 个约束(假设你只想垂直滚动):

1-4:ScrollView 到 Superview(顶部、底部、前导、尾随)。确保将它连接到父视图而不是安全区域。

5-8:内容视图到内容布局指南(顶部、底部、前导、尾随)。

  1. 内容视图宽度等于框架布局指南的宽度。

好吧,我遇到了这个问题,但我找到了解决方案。 问题是安全区

  • 在 UIview 中嵌入滚动视图。
  • 给顶部、底部、右侧和左侧 0。
  • 现在使用此视图给出滚动视图的约束。
  • 向此视图添加内容视图的等高和等宽。

父视图自动提供安全区域。您所要做的就是将滚动视图嵌入到 UIview 中,然后将内容视图的高度和宽度赋予该视图。

在属性的大小检查器(标尺图标)中禁用内容布局指南

我遇到了同样的问题,通过禁用该选项它就消失了。

希望对您有所帮助! :)

在 Xcode-11 中花了很长时间解决这个滚动问题。这个问题的结论是在添加新约束的时候必须选择滚动选项。

您可以参考以下截图解决您的问题。

这些提到的解决方案对我有用。

对我来说,最初 Content Layout GuidesScrollView 中默认处于禁用状态。所以我只是启用和禁用 Content Layout Guides 然后错误自动消失。

Xcode 11+, Swift 5.

我的问题解决了,我准备好了video and code

禁用属性中的内容布局指南对我有用。

@Vadim 的回答稍作调整就奏效了。 没有别的工作,我不想禁用 'Content layout guide'。既然苹果启用了,为什么要禁用呢。所以一定是我遗漏了什么或者是错误。

Vadim 的回答是:

I stacked with that problem as well. Found a good guide that helped me:
https://useyourloaf.com/blog/scroll-view-layouts-with-interface-builder/
Basically what you need is 9 constraints (assuming you want to scroll only vertically):

1-4: ScrollView to Superview (top, bottom, leading, trailing). Make sure to connect it to parent view and not to safe area.

5-8: Content view to Content Layout guide (top, bottom, leading, trailing)

9: Content view Width equals width to Frame Layout Guide.

很好,但是没有用,

但后来我意识到上面的 6 和 8('Content Layout guide' 的尾随和底部约束)约束有点奇怪。它们具有正常数值而不是零。就像下图一样。 (常量等于滚动视图的宽度和高度)。我将它们更改为零,现在一切正常。