【问题标题】:"Scollable content size ambiguity" despite hard-coded width and height?尽管有硬编码的宽度和高度,但“可滚动的内容大小不明确”?
【发布时间】:2019-12-04 05:48:03
【问题描述】:

是的,这是关于这个恼人错误的另一个问题。我查看了其他各种解决方案,到目前为止,他们还没有处理看似简单的案例。我有一个 UIScrollView,其中包含一个内容子视图,然后是该子视图上的一些控件。

我已经对该内容子视图的高度和宽度进行了硬编码,但 IB 仍然抱怨它们模棱两可。有任何想法吗?谢谢!

更新:如果我没记错的话,我的下一步是删除滚动内容的宽度约束。然后,IB 提出添加约束来解决问题,并进行了以下更改。它根据当前的限制提供了各种不同的“解决方案”,但这是唯一没有将滚动视图底部硬编码为其内容底部的解决方案(带有数字偏移量);这样的约束可能会破坏滚动视图本身针对不同屏幕高度的自动布局。

【问题讨论】:

    标签: ios xcode constraints interface-builder


    【解决方案1】:

    您需要将滚动视图的所有四个边缘都约束到其子级,以完全确定其内容区域。您只将滚动视图的一个边缘限制为一个孩子:它的顶部边缘。

    因此,摆脱“scrollContent.centerX = centerX”约束,保留“scrollContent.top = top”约束,并添加三个新约束:

    • scrollContent.leading = (Scroll View.)leading
    • scrollContent.trailing =(滚动视图。)尾随
    • scrollContent.bottom =(滚动视图。)底部

    【讨论】:

    • 谢谢,但我为什么要将滚动视图限制在它的子视图上?它需要占据屏幕的预定义部分,并充当子材质的视口。滚动视图在屏幕上的位置必须由对其父级或兄弟级的约束来定义,不是吗?当我按照您的建议进行操作时,IB 抱怨滚动视图本身缺乏 X 位置或宽度以及 Y 位置或高度的约束。这是错误的:我将其宽度和高度设置为安全区域,将其顶部设置为安全区域顶部,并且 centerX = 安全区域的 centerX。
    • 您需要从滚动视图到滚动视图之外的其他视图的约束,以便在更大的上下文中定义滚动视图的框架。您需要从滚动视图到其后代的约束来定义滚动视图的内容区域。查看Apple's Technical Note TN2154: UIScrollView And Autolayout
    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多