如何修复“滚动内容大小模糊”在 Xcode 11(iOS 12,iOS 13)使用自动布局

在使用 Auto Layout 时,我无法在 Xcode 11 beta 中的视图控制器中设置一个简单的 UIScrollView。我知道我必须将滚动视图约束为边缘,然后将滚动视图的宽度和高度设置为等于包含滚动视图的整个视图的宽度和高度。然而,当我尝试这样做时,我没有得到设置相同的宽度和高度的选项。

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

  • 引领空间走向安全区域
  • 顶部空间到安全区域
  • 拖曳空间到安全区域
  • 底部空间至安全区域
  • 中心水平安全区
  • 安全区域垂直中心

在其他视频中,有一个“等宽”和“等高”的选项,我似乎没有。

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

32475 次浏览

我也遇到了这个问题 (Version 11.0 beta 3 (11M362v))。我首先在 xcode10中设置布局,然后在 xcode11中运行它,从而解决了这个问题。我还没有找到任何官方说明,证明这是一个问题与 xcode11,但现在,我想这是一个问题与 xcode11贝特。

我也有同样的问题。 找到了一个很好的向导,帮助了我:

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

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

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

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

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

好吧,我正面临这个问题,但我已经找到了解决办法。 问题是 安全区enter image description here

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

父视图会自动显示安全区域。你所要做的就是将你的滚动视图嵌入到一个 UIview 中,然后给这个视图赋予相同的高度和宽度。

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

Disabling the content layout guides in properties

我也遇到过同样的问题,但是禁用了这个选项,它就消失了。

希望能有所帮助! :)

在 Xcode-11中花了很长时间研究这个滚动问题之后。这个问题的结论是,您必须在添加新约束时选择滚动选项。

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

enter image description here

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

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

Xcode 11 + Swift 5.

我解决了我的问题,我准备了 视频密码

在属性中禁用内容布局指南对我来说很有用。

@ 瓦迪姆的回答稍作调整就奏效了。 没有其他工作,我不想禁用“内容布局指南”。既然苹果启用了它,为什么要禁用它。所以我肯定漏掉了什么,或者是窃听器。

瓦迪姆的回答是:

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(“内容布局指南”的尾部和底部约束)约束有点奇怪。它们的常数是正值而不是零。如下图所示。(常数等于滚动视图的宽度和高度)。我把它们改成了零,现在一切都正常了。

enter image description here