【问题标题】:UIScrollView behaves different depending on fullscreen or not?UIScrollView 的行为是否因全屏而异?
【发布时间】:2014-01-19 19:24:45
【问题描述】:

当对 UIScrollView 应用自动布局约束时,如果滚动视图布局为全屏,我会收到一条错误消息,但如果它有“边距”则不会。我将用 2 个例子来说明。在这两个示例中,我将前导和尾随空格应用于超级视图,并将顶部和底部空格添加到布局指南。

示例 1(表现如我所料。)

自动布局约束为蓝色,一切正常

示例 2(奇怪的行为)

我拉伸滚动视图并应用与示例 1 中相同的规则,但现在其中 1 个约束最终不同。 “顶部空间到顶部布局指南”添加为“垂直空间 - (-548) - 顶部布局指南 - 滚动视图”。 然后 Xcode 抱怨我的滚动视图需要“y 位置或高度的约束”。

谁能解释这是为什么?

【问题讨论】:

    标签: ios interface-builder autolayout


    【解决方案1】:

    不幸的是,我认为这是 Xcode 5 中 Interface Builder 中的一个错误。当您尝试创建从视图顶部到顶部布局指南的约束时,IB 通常(错误地)从 底部添加约束 视图的顶部布局指南。

    要解决这个问题,请先尝试调整 scrollView 的大小,使其顶部边缘在您的 viewController 中低得多:

    然后尝试 ctrl 从 scrollView 拖动到 viewController,并在顶部布局指南中添加约束。然后,您可以选择此约束并调整检查器中的常量,以使 scrollView 与 viewController 的顶部对齐:

    或者,在代码中创建您的约束:)

    【讨论】:

    • 这是正确的解决方案。请接受!顺便说一句,您还可以使用 IB 添加滚动视图并执行“重置为建议的约束”。这样,您的约束就会以正确的方式创建。
    【解决方案2】:

    只需选择滚动视图并手动为顶部、左侧、底部和右侧创建约束。

    这里发生的情况是自动创建的约束没有意义,因为它们没有完全定义滚动视图的大小,只定义了它的位置。

    【讨论】:

      【解决方案3】:

      在滚动视图小于包含视图的原始示例之后,我注意到 XCode 实际上在我的情况下添加了错误的约束之一,当我选择“顶部空间到顶部布局指南”时,它正在添加一个“底部空间到顶部布局指南”具有较大负值的约束。我可以从您的第二个屏幕截图中看到类似的内容。

      我的解决方案是按照您的示例使用小于其容器的 UIScrollView。然后我手动拖出约束,调整 UIScrollView 的大小以适应容器。最后一步是使用错误的常量获取现在正确的约束,并将它们全部设置为 0。

      希望对您有所帮助,我仍在努力解决我遇到的问题,但我注意到这个阶段与您发布的类似。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-29
        • 1970-01-01
        • 1970-01-01
        • 2011-07-16
        • 2010-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多