1

在 Android 中,使用 ScrollView 作为 XML 文件中的根,然后在其中包含许多其他不同类型的视图,以允许滚动行为。

Swift 2.1 和 Xcode 7.1.1 是如何做到这一点的,因为故事板的长度不足以插入我想要放入的所有不同类型的视图,就像我在 Android 的 XML 代码中所做的那样?

我正在考虑带有 Android 大脑的 iOS :(

4

2 回答 2

2

0行代码

故事板足够长:

您需要做的就是创建一个自由形式的视图,使用自上而下的 Autolayout 约束放置所有内容是该自由形式的视图,并将该视图用作您的UIScrollView.

自由形式

教程

  1. 视图控制器 > 显示属性检查器 > 大小 > 自由形式
  2. View Controller > Show the Size Inspector > Simulated Size > Freeform > width & height
  3. 添加一个UIScrollView
  4. 添加4个AutoLayout约束,相对于superview的top/left,以及相对于scrollview的superview的bottom/right
    • Scroll.Top = Superview.Top 边距
    • Scroll.Leading = Superview.Leading
    • 底部布局 Guide.Top = Scroll.Bottom
    • Scroll.Trailing = Superview.Trailing
  5. 将 aUIView作为子视图添加到UIScrollView
  6. 重复 4 个 AutoLayout 约束,相同的规则:锚定顶部,超级视图相对于子视图的宽度/高度
    • Content.Top = Scroll.Top
    • Content.Leading = Scroll.Leading
    • Scroll.Bottom = Content.Bottom
    • Content.Trailing = Scroll.Trailing
  7. 将所有子视图添加到该UIView. 确保您可以使用与 4. 和 6.锚定的 top & superview.widthsuperview.height相对于内容的相同规则从上到下(以及从左到右)一直跟踪 AutoLayout 约束链。
  8. 内容视图的垂直高度由 7 处理。对于宽度,在本例中,我决定使用full width。注意内容视图的宽度是如何相对于根视图宽度的:
    • 内容宽度 = 视图宽度

连续的边到边约束

方法

  • 使用以下结构创建视图层次结构:

    1. UIView(由UIViewController
    2. UIScrollView滚动条(必须与根的关系拉伸)
    3. 内容UIView(这将决定滚动条滚动条和区域)
    4. 其他所有内容都进入内容视图
  • 了解什么决定了内容的大小

    1. 无论是硬尺寸
    2. 与包含视图的任一关系(连续约束)
    3. 要么相对于超级视图
  • 了解边到边 AutoLayout 约束连续性规则

    1. 对于定义封闭视图大小的方向,您应该能够从上到下或从左到右遵循一组连续的约束
    2. 你不需要这样的连续性来定位元素;事实上,你不需要的连续性可能会产生冲突
  • 使外壳尺寸相对于封闭的视图(您在示例中垂直实现的目标):

    1. 将第一个顶视图附加到一个刚性位置
    2. 将下面的每个视图附加到它上面的对象
    3. 将外壳底部连接到最后一个对象的底部

► 在GitHub 上找到此解决方案,并在Swift Recipes上找到更多详细信息。

于 2015-12-07T18:49:00.507 回答
2

界面构建器对象库中还有一个适用于 iOS 的滚动视图:

在此处输入图像描述

从这里开始到结束是如何使它在故事板中工作。

1:转到您的视图控制器并单击属性检查器。

2:将 Size 更改为 Freeform 而不是 Inferred。

3:转到该故事板上的主视图,而不是您的滚动视图,而是顶级视图。

4:单击尺寸检查器并将此视图设置为您想要的尺寸。我把身高改成了1000。

现在你会看到你的故事板有你的视图设置,所以你可以看到滚动的整个高度以便于设计。

5:放在滚动视图上并拉伸它,使其占据整个视图。您现在应该有一个大小为 320,1000 的滚动视图位于视图控制器中的视图上。

现在我们需要让它滚动并且需要让它正确显示内容。

6:单击您的滚动视图,然后单击身份检查器。

7:添加一个用户定义的运行时属性,其 KeyPath 为 contentSize,然后输入 SIZE 并输入您的内容大小。对我来说是 (320, 1000)。

因为我们想在故事板上看到我们的整个滚动视图,所以我们拉伸了它,它有一个 320,1000 的框架,但是为了让它在我们的应用程序中工作,我们需要将框架更改为可见的滚动视图。

8:添加一个带有 KeyPath 框架的运行时属性,类型为 RECT 和 0,0,320,416。

现在,当我们运行我们的应用程序时,我们将看到一个可见的滚动视图,其帧数为 0,0,320, 416,并且可以向下滚动到 1000。我们能够按照我们希望它们出现的方式在 Storyboard 中布局我们的子视图和图像等等。然后我们的运行时属性确保正确显示它。所有这一切都无需 1 行代码。

这是你想的吗?

如果您希望滚动视图更改大小,我建议您尝试以下操作:

在此处输入图像描述

您要做的是将滚动视图拖放到视图控制器上并添加约束。

我以前从未使用过滚动视图,所以这可能行不通。

于 2015-12-07T17:49:25.247 回答