UICollectionView 在 UIScrollView 内调整大小

Posted

技术标签:

【中文标题】UICollectionView 在 UIScrollView 内调整大小【英文标题】:UICollectionView gets resized inside of UIScrollView 【发布时间】:2016-04-18 08:54:57 【问题描述】:

我有一个子类 UICollectionViewController,我在应用程序的多个位置使用它。将其直接添加到视图中时,它看起来是正确的(水平对齐、垂直滚动),如下所示:

self.activityFeed = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"activityFeed"];
self.activityFeed.view.frame = CGRectMake(0, 76, self.view.frame.size.width, 50);
[self.view addSubview:self.activityFeed.view];

但是,将其添加到 UIScrollView 时,由于某种原因,对齐方式会发生变化,如下所示:

self.activityFeed = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"activityFeed"];
self.activityFeed.view.frame = CGRectMake(0, 300, self.view.frame.size.width, 50);
[self.scrollContentView addSubview:self.activityFeed.view];
// scrollContentView is a view that holds all of my subviews in the scrollview
// also, activityFeed.view has no autolayout constraints attached

我知道约束在滚动视图中的作用有很大不同,为了使我的集合视图看起来与第一张图像中的相同,我需要做些什么不同的事情吗?

【问题讨论】:

【参考方案1】:

试试这个, UICollectionView继承自UIScrollView,设置就这么简单,不需要单独的scrollview。

self.collectionView.alwaysBounceVertical = YES

【讨论】:

拥有一个单独的滚动视图与这个问题无关。该滚动视图对于应用程序的其他部分是必需的。【参考方案2】:

在故事板属性窗格中将滚动方向设置为水平。

【讨论】:

这已设置为水平,因为它与第一个示例中使用的故事板控制器相同,并且正在工作。

以上是关于UICollectionView 在 UIScrollView 内调整大小的主要内容,如果未能解决你的问题,请参考以下文章

折叠UICollectionView

在UITableViewCell中委托UICollectionView

处理 UICollectionView 单元格上的滑动:在 UICollectionView 或每个单元格上实现处理程序?

捏放大到 UITableViewCell 内的 UIImageView

UICollectionView 在滚动时响应?

如何在UICollectionView上面实现内容视图