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数据有效性里面怎样实现批量打印?如何一键完成打印第一页跟第二页?