您好我试图在故事板中设置滚动视图,并按照以下步骤进行操作:
我看到这个解决方案正在处理我看到的许多教程,但不是它不适用于我。我究竟做错了什么?我使用swift。
有人可以一步一步解释如何在故事板中设置滚动视图吗?
我的约束:
答案 0 :(得分:1)
好的,让我们想象一下以下的视图层次结构(注意,如果你在"文档"部分中为这些视图提供唯一的名称,那么查看Interface Builder中的约束会更容易; Identity Inspector"):
要进行此设置,您需要在IB中添加以下约束(我只是想在VFL中编写它,因为它是一种非常简洁的显示约束的方式):
显然,相对于其超级视图定义滚动视图(在此示例中为主视图):
H:|[scrollView]|
V:|[scrollView]|
定义,contentView
以便
它的宽度与主视图(==view
)相同,
滚动视图的contentSize
将更改为符合contentView
的大小。根据{{3}},滚动视图及其子视图之间的约束定义了滚动视图的contentSize
,而不是子视图的相对大小。
因此:
H:|[contentView(==view)]|
V:|[contentView]|
定义三个标签的布局,使其在contentView
内偏移:
H:|-[label1]-|
H:|-[label2]-|
H:|-[label3]-|
而不是硬编码contentView
的高度(以及滚动视图的contentSize
,而只是定义标签与{{的垂直高度的关系。 1}},(由于上面的步骤2),调整滚动视图的contentView
的垂直高度:
contentSize
这就是你需要做的。我没有硬编码任何宽度(主视图自动宽度,滚动视图,更重要的是,V:|-[label1]-[label2]-[label3]-|
定义与其相关的宽度。但标签宽度是从{ {1}},contentView
高度(以及滚动视图' s contentView
)是从三个标签的固有高度推断出来的。
最终结果是IB中的约束如下:
仅供参考,如果您想进行一些诊断,您可以在应用程序在模拟器上运行时单击视图调试按钮:
您可以看到视图(以及可选的约束)并确保一切正常:
您还可以通过contentView
提示符查看contentSize
:
_autolayoutTrace
这确认没有冲突的布局,并且没有不明确的布局。