获取 UICollectionView 部分的框架
Posted
技术标签:
【中文标题】获取 UICollectionView 部分的框架【英文标题】:Get the frame for a UICollectionView section 【发布时间】:2016-06-03 13:56:56 【问题描述】:如何在UICollectionView
实例中获取整个部分的框架(CGRect
值)?
我知道UITableView
有一个rectForSection:
方法。我正在为UICollectionView
寻找类似的东西。
我检查了UICollectionViewFlowLayout
的文档,但找不到任何类似于rectForSection:
的内容。
【问题讨论】:
看到这个对你有帮助的时候***.com/questions/27011572/… ***.com/questions/12504924/…这个? 重复***.com/questions/27011572/… 抱歉,您发布的链接不相关。我想得到整个部分的矩形,而不仅仅是标题或单元格 【参考方案1】:到collectionView添加类别
@implementation UICollectionView (BMRect)
- (CGRect)bm_rectForSection:(NSInteger)section
NSInteger sectionNum = [self.dataSource collectionView:self numberOfItemsInSection:section];
if (sectionNum <= 0)
return CGRectZero;
else
CGRect firstRect = [self bm_rectForRowAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:section]];
CGRect lastRect = [self bm_rectForRowAtIndexPath:[NSIndexPath indexPathForItem:sectionNum-1 inSection:section]];
return CGRectMake(0, CGRectGetMinY(firstRect), CGRectGetWidth(self.frame), CGRectGetMaxY(lastRect) - CGRectGetMidY(firstRect));
- (CGRect)bm_rectForRowAtIndexPath:(NSIndexPath *)indexPath
return [self layoutAttributesForItemAtIndexPath:indexPath].frame;
@end
【讨论】:
您的答案似乎全是代码。添加一些词语来描述问题所在和您的解决方案。 @idhong - 看起来您在将代码添加到帖子并使其格式正确时遇到了问题。要正确格式化代码,您需要在每行之前添加四个空格。您也可以粘贴代码,全选,然后在编辑器中按 CTRL-K 以自动为您执行此操作【参考方案2】:Collection view section frame依赖于collection view layout。它可能是流式布局或自定义布局。所以你不会得到任何预定义的解决方案。但是您可以使用
为您的布局计算它UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath];
UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForSupplementaryElementOfKind:UICollectionElementKindSectionHeader atIndexPath:indexPath];
我会建议你继承 UICollectionViewLayout 并将你的节框架计算代码放在里面,这样你的节框架将永远是更新的。
注意:如果节起点和终点未垂直对齐,这些点不会给您 rect 的超集。老实说,没有更好的方法来获取节框架。
【讨论】:
感谢您提供补充元素,即标题。很容易错过。以上是关于获取 UICollectionView 部分的框架的主要内容,如果未能解决你的问题,请参考以下文章
如何从子 UICollectionview 中获取 UITableView 的一部分
从 UICollectionView 的 viewForSupplementaryElementOfKind 获取 NSFetchedResultsController 部分对象
如何禁用 UICollectionView 部分之间的单元格拖动?
UICollectionView 与从照片中获取的数据源 - 大量照片的缓慢更新
UICollectionView 中的 UICollectionViewFlowLayout - 每个部分中的动态单元格数