UIScrollview 不适用于情节提要
Posted
技术标签:
【中文标题】UIScrollview 不适用于情节提要【英文标题】:UIScrollview not working with Storyboard 【发布时间】:2015-02-15 20:56:32 【问题描述】:您好,我正在尝试在情节提要中设置滚动视图,并按照以下步骤进行操作:
-
将滚动视图添加到根视图。
将零空间固定到超级视图的所有边缘。
在上面的滚动视图中添加一个UIView(contentView)。
将零空格固定到滚动视图的所有边缘添加一些小部件
contentView 并将 contentView 的高度更改为 2000。
我看到这个解决方案适用于我看到的许多教程,但它不适用于我。我究竟做错了什么?我用 swift。
有人可以逐步解释如何在情节提要中设置滚动视图吗?
我的限制:
【问题讨论】:
我假设您希望contentView
与主视图的宽度相同?我假设您将contentView
的前导/尾随约束添加到UIScrollView
。问题是这些约束仅调整滚动视图的contentSize
,而不是contentView
的大小。最重要的是,您必须在 contentView
和 UIScrollView
的 superview
之间添加一个约束。见***.com/a/22772106/1271826。
我编辑了我的问题。我尝试了 contentview 和 mainview 之间的约束,但仍然没有结果。
是的 contentView 应该和 mainView 一样。
【参考方案1】:
好的,让我们想象以下视图层次结构(注意,如果您在“身份检查器”的“文档”部分中为这些视图指定唯一名称,则在 Interface Builder 中查看约束会更容易):
要设置它,您需要在 IB 中添加以下约束(我打算用 VFL 编写它,因为它是显示约束的一种非常简洁的方式):
显然,相对于其父视图(在本例中为主视图)定义滚动视图:
H:|[scrollView]|
V:|[scrollView]|
定义,contentView
使得
它的宽度与主视图(==view
)相同,并且
滚动视图的contentSize
将更改为适合contentView
的大小。根据TN2154,滚动视图与其子视图之间的约束定义了滚动视图的contentSize
,而不是子视图的相对大小。
因此:
H:|[contentView(==view)]|
V:|[contentView]|
定义三个标签的布局,使它们在contentView
内偏移:
H:|-[label1]-|
H:|-[label2]-|
H:|-[label3]-|
与其硬编码contentView
的高度(以及滚动视图的contentSize
,不如直接定义标签与contentView
的垂直高度的关系,这(因为上面的第2 步) , 调整滚动视图的contentSize
的垂直高度:
V:|-[label1]-[label2]-[label3]-|
这就是你需要做的。我没有硬编码任何宽度(主视图自动具有宽度,滚动视图和更重要的是contentView
都定义了与此相关的宽度。但是标签宽度是从contentView
插入的,并且contentView
高度(以及滚动视图的 contentSize
)是从三个标签的固有高度推断出来的。
最终结果是 IB 中的约束如下所示:
仅供参考,如果您想进行一些诊断,可以在应用程序在模拟器上运行时单击查看调试按钮:
您可以看到视图(以及可选的约束)并确保一切正常:
您也可以通过(lldb)
提示符查看_autolayoutTrace
:
(lldb) po [[UIWindow keyWindow] _autolayoutTrace]
UIWindow:0x7fbbb3617910
| •UIView:0x7fbbb349a840
| | *UIScrollView:0x7fbbb3491c80
| | | *UIView:0x7fbbb348e180
| | | | *UILabel:0x7fbbb348e450'Label'
| | | | *UILabel:0x7fbbb3490670'Label'
| | | | *UILabel:0x7fbbb3490a70'Label'
| | | UIImageView:0x7fbbb34a3eb0
| | | UIImageView:0x7fbbb34a3800
| | *_UILayoutGuide:0x7fbbb349a970
| | *_UILayoutGuide:0x7fbbb349b460
这确认没有冲突的布局,也没有不明确的布局。
【讨论】:
以上是关于UIScrollview 不适用于情节提要的主要内容,如果未能解决你的问题,请参考以下文章
安全区域布局指南不适用于情节提要中的 UITableViewController
UIScrollView 不能使用情节提要垂直滚动(使用自动布局)?
是否可以在情节提要中使用 uiscrollview 设计视图并检查自动布局?