UICollectionView 第二页内容显示在第一页

Posted

技术标签:

【中文标题】UICollectionView 第二页内容显示在第一页【英文标题】:UICollectionView second page content showing on first page 【发布时间】:2016-02-05 12:13:44 【问题描述】:

由于某种原因,当我在 UICollectionView 的第一页时, 它显示了第二页的图像。

而且我还注意到页面没有居中....

我手动设置了

 pageControl.numberOfPages = 3

所以我有三页图像。 每页显示 8 个项目(嗯...理想情况下)。

这是在 ViewDidLoad 中:

 UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];  
 [layout setSectionInset:UIEdgeInsetsMake(10, 10, 15, 10)];
 [layout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
 [self.collectionView setCollectionViewLayout:layout];
 self.collectionView = [[UICollectionView alloc] initWithFrame:keyboardRect collectionViewLayout:layout];
 self.collectionView.dataSource = self;
 self.collectionView.delegate = self;
 self.collectionView.pagingEnabled = true;
 self.collectionView.alwaysBounceHorizontal = true;
 self.collectionView.contentSize = CGSizeMake(keyboardRect.size.width , keyboardRect.size.height);
 self.collectionView.showsHorizontalScrollIndicator = false;
 UINib *cellNib = [UINib nibWithNibName:@"TopCell" bundle:nil];
 [self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cellIdentifier"];
 [self.collectionView registerClass:[TopCollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
 [self.collectionView setBackgroundColor:[UIColor redColor]];
 [self.view addSubview:self.collectionView];

当我试图增加左右插图时

 [layout setSectionInset:UIEdgeInsetsMake(10, 10, 15, 10)];

这只会让事情变得更糟。只看第一页就好了 但随后第二页和第三页就会消失。

这是我的一些代码:

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
  return [self.Images count];



-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
  return CGSizeMake(70, 70);


-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView* )collectionView 
  return 3;

提前谢谢你!

【问题讨论】:

设置 pagingEnabled = TRUE 用于 collectionview 和检查。 设置为真。 (上面的代码) 【参考方案1】:

如果你想在每个页面中只显示一个部分图片,那么你必须修改

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 方法。

你必须返回一个更通用的尺寸。

CGSize returnSize = CGSizeMake(screenWidth / 2 - insets, screenWidth / 2 - insets)

这里的插图代表每个项目的 interItemSpacing。 screenWidth 是 collectionView 的宽度。

【讨论】:

【参考方案2】:

如果你想使用collectionView的横向样式,你需要自定义布局。 这里有一些你可以使用的示例代码,我已经在 github 上上传了自定义布局代码。

FCEmoticonViewLayout *layout = [[FCEmoticonViewLayout alloc]init];
layout.itemSize = CGSizeMake(itemWidht, itemWidht);
layout.itemSpacing = 15;
layout.lineSpacing = 15;
layout.numberOfColumn = 5;
layout.numberOfRow = 2;
self.collectionView.collectionViewLayout = layout;

https://gist.github.com/Heisenbean/a0de38c1379a9d6a83f09ba6cafcb03c

【讨论】:

以上是关于UICollectionView 第二页内容显示在第一页的主要内容,如果未能解决你的问题,请参考以下文章

如何嵌套使用SQL语句,实现分页.比如就是说第一页显示10个,第二页显示下面的是个,这个要怎么实现?

怎样在计算机中给第二页添加页脚(第一页不显示页脚),显示页码和文字“PowerPoint”?

EXCEL数据有效性里面怎样实现批量打印?如何一键完成打印第一页跟第二页?

怎么用html编辑第二页网页,现在内容全挤在第一页上?

WPS的EXCEL表格,打印的时候,总是一半在第一页,另一半在第二页,求指点,怎样整合?

UICollectionView 两个具有相同视图的单元格。第二个单元格不显示任何内容