【发布时间】:2015-09-09 07:05:12
【问题描述】:
我正在开发基于集合视图的项目,其中 Numberofitem 将根据用户对特定索引的点击进行更改和增加。全部在我的项目中完美运行,但我无法根据集合视图中的单元格数量设置单元格大小。此外,collectionview 将无法通过调整大小来滚动查看所有单元格修复。 这里我附上了所有的图片。
1) 故事板视图
2) 四个单元格的结果
3)当细胞数量增加时
目前我使用以下代码通过这种方式设置了我的单元格。但我想设置,如果集合视图中有四个单元格,则每个单元格的大小会根据集合视图和设备大小(iphone 5s、iphone 6、iphone 6plus)增加并适合
这是我的尝试,
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
return 5.0;
}
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
return 5.0;
}
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
////@property NSInteger count;////
if (_count == 0) {
// width = ((width - (span*5))/4);
// return CGSizeMake(self.view.frame.size.width/4, self.view.frame.size.height/4);
return CGSizeMake(self.view.frame.size.width/2.5, self.view.frame.size.height/5);
}
if (_count == 1 || _count == 2)
{
return CGSizeMake(self.view.frame.size.width/2.5, self.view.frame.size.height/5);
// return CGSizeMake(100.0, 100.0);
}
if ( _count == 3 || _count == 4 || _count == 5)
{
// return CGSizeMake(100.0, 100.0);
return CGSizeMake(self.view.frame.size.width/3.5, self.view.frame.size.height/6.5);
}
if ( _count == 6 || _count == 7 || _count == 8 || _count == 9)
{
//return CGSizeMake(90.0, 90.0);
return CGSizeMake(self.view.frame.size.width/4, self.view.frame.size.height/8);
}
if ( _count == 10 || _count == 11 || _count == 12 || _count == 13 || _count == 14)
{
// return CGSizeMake(80.0, 80.0);
return CGSizeMake(self.view.frame.size.width/4, self.view.frame.size.height/8);
}
if ( _count == 15 || _count == 16 || _count == 17 || _count == 18 || _count == 19 || _count ==20)
{
//return CGSizeMake(70.0, 70.0);
return CGSizeMake(self.view.frame.size.width/4.75, self.view.frame.size.height/9.5);
}
if (_count ==21 || _count == 22 || _count == 23 || _count == 24 || _count == 25 || _count == 26 || _count == 27) {
// return CGSizeMake(60.0, 60.0);
return CGSizeMake(self.view.frame.size.width/6, self.view.frame.size.height/12);
}
if (_count ==28 || _count == 29 ) {
// return CGSizeMake(50.0, 50.0);
return CGSizeMake(self.view.frame.size.width/6.25, self.view.frame.size.height/12.5);
}
else
return CGSizeMake(0, 0);
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return itemincollectionview.count;
}
注意:- 这个方法我也试过了。
- (void)viewDidLayoutSubviews
{
self.automaticallyAdjustsScrollViewInsets = NO;
[self.collectionView layoutIfNeeded];
NSArray *visibleItems = [self.collectionView indexPathsForVisibleItems];
NSIndexPath *currentItem = [visibleItems objectAtIndex:0];
NSIndexPath *nextItem = [NSIndexPath indexPathForItem:_setRandomIndex inSection:currentItem.section];
[self.collectionView scrollToItemAtIndexPath:nextItem atScrollPosition:UICollectionViewScrollPositionNone animated:YES];
}
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
[self.collectionView.collectionViewLayout invalidateLayout];
}
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
[self.view layoutIfNeeded];
}
【问题讨论】:
-
你应该更清楚,因为我可能不是唯一一个对你想要做什么感到困惑的人。
-
我想这样做igame.com/eye-test
-
你的问题解决了吗?
标签: objective-c ios7 uicollectionview