出于某种原因,当我在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;
}
提前谢谢!
答案 0 :(得分:0)
如果您想在每个页面中只显示一个部分图像,则必须修改
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
方法。
您必须返回更通用的尺寸。
CGSize returnSize = CGSizeMake(screenWidth / 2 - insets, screenWidth / 2 - insets)
此处inset表示每个项目的interItemSpacing。 screenWidth是collectionView的宽度。
答案 1 :(得分:0)
如果要使用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