1

我的视图层次结构如下所示:

- View
  - Scroll View
    - Collection View

我正在使用自动布局。问题是,当我指定集合视图应该占用父视图的全宽时,它实际上会占用其中包含的元素的全宽。即,如果这个集合视图中有 1000 个元素并且每个元素是 10 像素宽,那么集合视图将是 10000 像素。它似乎忽略了我的限制。

我正在使用的 VFL 看起来有点像这样:

滚动视图

H:|[scroll]|
V:|[scroll]|

集合视图

H:|[collection]|
V:|[collection]|

所有视图都设置为不将自动调整大小的掩码转换为约束。

4

2 回答 2

1

当我指定集合视图应该占用父视图的全宽时,它实际上会占用其中包含的元素的全宽。

滚动视图的全部意义在于它允许显示比滚动视图本身更大的视图。所以将集合约束到滚动视图是没有意义的——滚动视图的子视图可以尽可能大。如果您想限制集合视图的大小,只需将其宽度设置为您喜欢的任何宽度。

于 2013-07-06T05:13:16.253 回答
0

您帖子中的约束使集合视图沿两个轴填充滚动视图。目前尚不清楚您为什么要这样做。我假设您实际上想要 App Store 之类的东西,它在垂直滚动的滚动视图中有多个水平滚动的集合。

自动布局对滚动视图有特殊的行为。阅读技术说明 TN2154:UIScrollView 和自动布局

因此,滚动视图的边缘和滚动视图的后代之间的约束会影响滚动视图的内容大小。滚动视图的边缘和滚动视图之外的视图之间的约束会影响滚动视图的框架。

您需要将集合视图的左边缘固定到顶级视图的左边缘(滚动视图的超级视图),右边缘类似。你不能用视觉格式来做到这一点。您需要明确创建这些约束(或在您的 xib 或情节提要中设置它们)。

于 2013-07-06T05:55:52.260 回答