获取UICollectionView部分的框架

时间:2016-06-03 13:56:57

标签: ios uicollectionview

如何获取UICollectionView实例中整个部分的框架(UITableView值)? 我知道rectForSection:UICollectionView方法。我正在为UICollectionViewFlowLayout寻找类似的东西。

我检查了rectForSection:的文档但找不到 Addition of prime No upto 2 million below is the code. Please let me know if anyone have doubt. <html> <body> <input id="inp" width="200px"/> <input type="button" onClick="onPress()" value="Check"/> </body> <script> function onPress() { var value= document.getElementById("inp").value; var arr=[2,3,5,7], add=17; for(var divisor=2; divisor<value; divisor++) { var prime= true if(divisor%2==0 || divisor%3==0 || divisor%5==0 || divisor%7==0) { prime=false; } if(prime !=false) { for(var j=0; j<arr.length; j++) { if(divisor%arr[j]==0) { prime=false; } } } if(prime==true) { arr.push(divisor); add+= divisor; } } console.log(add); } </script> </html> 的任何内容。

2 个答案:

答案 0 :(得分:3)

到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

答案 1 :(得分:1)

集合视图部分框架取决于集合视图布局。它可能是流布局或自定义布局。所以你不会得到任何预定义的解决方案。但您可以使用

计算布局
UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath];

UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForSupplementaryElementOfKind:UICollectionElementKindSectionHeader atIndexPath:indexPath];

我建议你继承UICollectionViewLayout并在其中加入剖面框计算代码,这样你的剖面框将永远是更新的。

注意:如果剖面起点和终点没有垂直对齐,这些点不会给你rect的超集。说实话,没有更好的方法来获得剖面框架。