【发布时间】:2016-10-02 20:06:09
【问题描述】:
我有一个带有多个视图的情节提要场景,包括一个带有自己的视图控制器的容器视图。场景的主视图希望能够在其所有内容上垂直滚动,但所有内容(包括滚动视图的内容窗格)的大小都需要由 AutoLayout 设置。我一直在尝试遵循此处和苹果文档中其他几个问题给出的解释,但似乎有一个特定于我正在尝试做的事情的障碍:
容器视图有一个项目列表,每个项目都显示在一个方框中。这些框架在每行中平铺五个,根据需要尽可能多的行。这些项目的数量可能随时变化,因此网格的最终高度是未知的。但是,网格的高度确实取决于容器的宽度,因为必须始终有五个跨度。
因此,一个合理的约束应该是这样的:
container.height = (0.2 * numberOfRows) * containerWidth + 0.0
根据文档,我应该设置这个约束来强制滚动视图的contentSize 以适应所有被滚动的东西。
但是,您会注意到,当我使用 IBOutlet 保存它时,此约束的 numberOfRows 组件会动态变化——这是约束的 multiplier 属性的一部分。当我试图让内容获取回调更改乘数时,它会出现编译器错误,因为multiplier 是只读的。
如何在仍然使用自动布局的同时动态更改滚动条子视图的高度?
这张图片希望能显示出我正在尝试做的事情。最后一个容器视图上方的所有内容都与约束正确对齐。最后一个应该有一个正方形网格(未知计数)。我以编程方式创建的布局约束正确地给了正方形的大小。但目前,滚动视图的内容大小被固定为滚动视图的大小,而不是被扩展为包含高大的拼贴画——所以不会发生滚动!
【问题讨论】:
标签: ios xcode swift uiscrollview autolayout