【问题标题】:How to fix "Scrollable Content Size Ambiguity" in Xcode 11 (iOS 12, iOS 13) using Auto Layout如何使用自动布局修复 Xcode 11(iOS 12、iOS 13)中的“可滚动内容大小歧义”
【发布时间】:2019-10-27 11:12:54
【问题描述】:

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

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

  • 将空间引向安全区域
  • 安全区顶部空间
  • 到安全区域的尾随空间
  • 底部空间到安全区域
  • 在安全区域中水平居中
  • 在安全区域垂直居中

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

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

【问题讨论】:

    标签: uiscrollview ios-autolayout xcode11


    【解决方案1】:

    @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(“内容布局指南”的尾随和底部约束)约束有点奇怪。它们具有正常数值而不是零。就像下图一样。 (常量等于滚动视图的宽度和高度)。我将它们更改为零,现在一切正常。

    【讨论】:

      【解决方案2】:

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

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

      希望对您有所帮助! :)

      【讨论】:

      • 我想出了另一种让它工作的方法,但这要简单得多。谢谢!
      • @PranavRamesh 我正在使用自动调整大小并且内容布局指南选项已被禁用,但我遇到了同样的问题。你的其他解决方案是什么?
      • @PranavRamesh 你的其他解决方案是什么?
      • 虽然删除了内容布局指南,但解决了这个警告,我相信修复它的正确方法是尽可能更新内容布局指南或框架布局指南的约束。就我而言,我使用 Frame Layout 来进行前导、尾随、顶部和底部;和内容布局到宽度和高度并解决我的问题。
      • @Shehroz Xcode 会自动将内容视图的侧面约束到滚动视图框架布局。只需从约束更改为框架布局到超级视图即可。当您在界面构建器中创建约束时,您需要遍历所有四个约束并从框架布局切换到超级视图。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        Xcode 11+,Swift 5。

        我解决了我的问题,我准备了videocode

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

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

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

            【讨论】:

            • 我相信这是解决此警告的正确方法。对我有用,谢谢!就我而言,我使用 Frame Layout 来进行前导、尾随、顶部和底部;和内容布局到宽度和高度。
            【解决方案7】:

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

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

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

            【讨论】:

              【解决方案8】:

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

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

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

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

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

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

              【讨论】:

              • 对于 1-4 ,使用安全区域也可以,我认为应该使用安全区域。
              【解决方案9】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-04
                • 2023-03-12
                • 2013-07-25
                • 1970-01-01
                • 2012-09-27
                • 2018-08-12
                相关资源
                最近更新 更多