我有一个UICollectionView
大小的对象 (320,500)。
我需要一个来创建UICollectionView
以这样的方式,内容垂直居中。意味着如果内容的总大小为 (100,100),则单元格应在矩形 (0,200):(320,300) 中绘制自身。即垂直中心 250 处上方 50 处,下方 50 处。
问题是单元格的数量和单元格的大小仅在运行时决定。例如,如果单元格中的文本可以是 1 行,则大小为 ~ (100,50) 。如果是 4 行,大小将为 ~ (100,200)。所以只有在我跑完之后collectionView:sizeForItemAtIndexPath:
对于最后一个单元格,我可以确定第一个单元格的起始位置。
任何开始建议我应该如何解决这个问题。即使我子类Flowlayout
在绘制最后一个单元格之前,我如何知道第一个单元格的位置?
您可以使用 insetForSectionAt Index 委托方法将单元格居中:
#pragma mark collection view cell paddings
- (UIEdgeInsets)collectionView:(UICollectionView*)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
float leftInset = (self.view.frame.size.width - (COUNT_OF_CELL*WIDTH_OF_CELL + COUNT_OF_CELL-1 * SPACE_BETWEEN_CELLS)) / 2;
return UIEdgeInsetsMake(0, leftInset, 0, 0); // top, left, bottom, right
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
return 8; // this is SPACE_BETWEEN_CELLS
}
您必须更改 COUNT_OF_CELL (这是数组的计数)、WIDTH_OF_CELL、SPACE_BETWEEN_CELLS,它将按您的意愿工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)