【问题标题】:Adjusting scroll view depending on content size of subview根据子视图的内容大小调整滚动视图
【发布时间】:2015-07-11 16:02:33
【问题描述】:

我正在尝试允许滚动视图根据此页面上子视图的大小调整大小。图片中对象的所有其他约束都可以正常工作。

当我向我的子视图添加约束以拥抱屏幕的左侧、右侧和底部(并且子视图的顶部拥抱分段控件的底部)然后更新帧时,它会使子视图 0。

我无法为子视图添加高度约束,因为子视图的大小会根据其中的内容量动态变化,然后会改变滚动视图的大小。

如何在不添加高度限制的情况下完成此操作?

【问题讨论】:

    标签: ios swift xcode6


    【解决方案1】:

    您的视图层次结构应如下所示:

    创建 UIScrollView 的单个子视图,我们将在其中放置所有 我们的内容

    内容视图必须是明确的大小(或占位符大小) 界面生成器并在运行时设置)。换句话说,您的内容 视图不能依赖滚动视图来获取其大小。它可以, 但是,取决于滚动视图之外的视图来获取其大小。

    来自 Apple 技术说明 TN2154

    • 在所有视图上将 translatesAutoresizingMaskIntoConstraints 设置为 NO 参与。

    • 使用外部约束定位和调整滚动视图的大小 到滚动视图。

    • 使用约束来布置子视图 滚动视图,确保约束绑定到所有四个边缘 滚动视图,不要依赖滚动视图来获取它们的大小。

      UIScrollView And Autolayout

      Using UIScrollView with Auto Layout in iOS

    【讨论】:

    • 我很抱歉,但我对你的回答感到困惑。为什么我不能将子视图绑定到滚动视图的左右和底部,并将子视图的顶部绑定到分段控件的底部?我的层次结构也像你说的那样。滚动视图对视图的所有四个角都有约束。如果我将子视图的顶部绑定到滚动视图的顶部,子视图将根据屏幕大小移动所有内容
    • 您能否分享您的视图层次结构以及滚动视图和内容视图的约束,基本上您需要的是 1)将视图 0 滚动到所有边缘 2)具有明确宽度和高度的内容视图(可能根据内容视图中的视图计算)如果您以正确的方式设置约束,自动布局可以自动计算内容大小
    • 好的,我现在开始明白你在说什么了,但我想我只是不明白为什么 Xcode 会成功,所以我需要在滚动视图之上的另一个视图,看到滚动视图本身应该充当某种类型的内容容器。如何根据内容中的视图更改内容视图高度?
    【解决方案2】:

    尝试将Equl HeightsEqual Width 约束赋予您的子视图。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多