【发布时间】:2014-01-07 20:35:14
【问题描述】:
我对流布局进行了子类化,并将其设置为我的集合视图上的collectionViewLayout。
然后我设置布局如下:
- (id) init
{
if(self = [super init])
{
self.minimumInteritemSpacing = 11.0;
self.scrollDirection = UICollectionViewScrollDirectionVertical;
self.itemSize = CGSizeMake(64.0,32.0);
self.minimumLineSpacing = 10.0;
self.sectionInset = UIEdgeInsetsMake(11.0,95.0,11.0,11.0);
return self;
}
return nil;
}
95 + 64 + 11 + 64 + 11 + 64 + 11 = 320 - 我查过了。 (即左插图 3 个单元格 2 个空格和右插图)
我有 1 个部分,72 个项目,以及用于索引路径功能的单元格:
- (UICollectionViewCell*) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifierForCustomCell forIndexPath:indexPath];
cell.mainLabel.text = [@(indexPath.item) stringValue];
return cell;
}
输出是这样的:
如您所见,每行只有 2 个单元格。此外,它不会显示每 3 个单元格。
我看了一下流布局的布局函数产生了什么
- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
给...
这是layoutAttributes [NSArray] 中的前 3 个布局属性,如您所见,它已决定仅将前 2 项和第 4 项视为对矩形可见(320 x 568)。这一定是集合视图布局中的错误,不是吗?集合视图填满屏幕,宽度为 320。因此,由于这是一个换行布局,因此任何项目都不应该离开屏幕。
移除边缘插图:
它按预期工作。但是我想要部分插图,因为我需要添加一些装饰视图,这些视图需要在同一个滚动视图中,而我需要一个比右插图大得多的左侧插图。
【问题讨论】:
标签: ios uikit uicollectionview