UIScrollview无法使用Storyboard

时间:2015-02-15 20:56:33

标签: swift uiscrollview ios8 xcode6

您好我试图在故事板中设置滚动视图,并按照以下步骤进行操作:

  1. 将滚动视图添加到根视图。
  2. 将零空格固定到超视图的所有边缘。
  3. 将UIView(contentView)添加到上面的scrollview中。
  4. 将零空格固定到scrollview的所有边缘,添加一些小部件 contentView并将contentView的高度更改为2000。
  5. 我看到这个解决方案正在处理我看到的许多教程,但不是它不适用于我。我究竟做错了什么?我使用swift。

    有人可以一步一步解释如何在故事板中设置滚动视图吗?

    我的约束: constrains for scrollview

1 个答案:

答案 0 :(得分:1)

好的,让我们想象一下以下的视图层次结构(注意,如果你在"文档"部分中为这些视图提供唯一的名称,那么查看Interface Builder中的约束会更容易; Identity Inspector"):

enter image description here

要进行此设置,您需要在IB中添加以下约束(我只是想在VFL中编写它,因为它是一种非常简洁的显示约束的方式):

  1. 显然,相对于其超级视图定义滚动视图(在此示例中为主视图):

    H:|[scrollView]|
    V:|[scrollView]|
    
  2. 定义,contentView以便

    • 它的宽度与主视图(==view)相同,

    • 滚动视图的contentSize将更改为符合contentView的大小。根据{{​​3}},滚动视图及其子视图之间的约束定义了滚动视图的contentSize,而不是子视图的相对大小。

    因此:

    H:|[contentView(==view)]|
    V:|[contentView]|
    
  3. 定义三个标签的布局,使其在contentView内偏移:

    H:|-[label1]-|
    H:|-[label2]-|
    H:|-[label3]-|
    
  4. 而不是硬编码contentView的高度(以及滚动视图的contentSize,而只是定义标签与{{的垂直高度的关系。 1}},(由于上面的步骤2),调整滚动视图的contentView的垂直高度:

    contentSize
  5. 这就是你需要做的。我没有硬编码任何宽度(主视图自动宽度,滚动视图,更重要的是,V:|-[label1]-[label2]-[label3]-| 定义与其相关的宽度。但标签宽度是从{ {1}},contentView高度(以及滚动视图' s contentView)是从三个标签的固有高度推断出来的。

    最终结果是IB中的约束如下:

    enter image description here


    仅供参考,如果您想进行一些诊断,您可以在应用程序在模拟器上运行时单击视图调试按钮:

    enter image description here

    您可以看到视图(以及可选的约束)并确保一切正常:

    enter image description here

    您还可以通过contentView提示符查看contentSize

    _autolayoutTrace

    这确认没有冲突的布局,并且没有不明确的布局。