水平滚动方向的iOS7 UICollectionView不起作用
Posted
技术标签:
【中文标题】水平滚动方向的iOS7 UICollectionView不起作用【英文标题】:iOS7 UICollectionView in scroll direction horizontal isn't working 【发布时间】:2013-09-23 14:46:50 【问题描述】:ios6 的相同代码运行良好。
由于某些原因更新到 iOS7 并使用此布局时
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
/
CGSize s = CGSizeMake(self.collectionView.frame.size.height,self.collectionView.frame.size.height);
[flowLayout setItemSize:s];
collectionview 委托方法没有被调用。我将滚动方向更改为垂直,调用所有委托,我将集合视图的帧大小更改为更大,并调用委托方法。我怀疑collectionview 是出于某种原因在其内容视图内偏移,导致单元格不在屏幕上,从而没有调用代表。当框架变大(在水平或垂直模式下)时,collectionview“填充”滚动视图并调用委托
正常大小的collectionview(不调用单元格和委托)
将框架放大 50 像素
CGRect r = CGRectInset(self.filmStripRect, 0, -50);
单元格出现并调用代表
【问题讨论】:
你在storyboard中也设置了滚动方向吗? 不使用故事板 啊。您将单元格 .itemSize 设置为与您的 collectionview 大小相同。也许就是这样?每个单元格将与您的整个 collectionview 大小相同。只需将 CGSize 设为 20,20 即可进行测试。 跟这个***.com/questions/13780138/…有关 【参考方案1】:您还应该检查这些以使水平滚动正常工作:
【讨论】:
【参考方案2】:我们应该创建一个新的CollectionViewLayout
,并把它交给collectionView
:
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
self.collectionView.collectionViewLayout = flowLayout;
【讨论】:
以编程方式更改现有流布局的滚动方向不起作用。创建一个新的对我来说是正确的解决方案。谢谢【参考方案3】:UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[CollectionData setCollectionViewLayout:flowLayout];
如果您使用故事板,请选择一个集合视图,转到属性检查器并设置滚动方向水平。
【讨论】:
以上是关于水平滚动方向的iOS7 UICollectionView不起作用的主要内容,如果未能解决你的问题,请参考以下文章
将方向更改为“水平”不会更改 RadListView 的滚动方向?