UITableView
にはメソッドrectForRowAtIndexPath:
がありますが、これは UICollectionView には存在しません。セルの境界四角形を取得するためのきれいな方法を探しています。おそらく、にカテゴリとして追加できる方法UICollectionView
です。
質問する
39142 次
5 に答える
149
これを行うために私が見つけた最良の方法は次のとおりです。
Objective-C
UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath];
迅速
let attributes = collectionView.layoutAttributesForItem(at: indexPath)
attributes.frame
次に、またはのいずれかを介して場所にアクセスできますattributes.center
于 2012-09-24T04:54:05.420 に答える
9
迅速に行うことができます:
//for any cell in collectionView
let rect = self.collectionViewLayout.layoutAttributesForItemAtIndexPath(clIndexPath).frame
//if you only need for visible cells
let rect = cellForItemAtIndexPath(indexPath)?.frame
于 2015-05-07T17:43:57.750 に答える
-2
どうですか
-(CGRect)rectForCellatIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [self cellForItemAtIndexPath:indexPath];
if (!cell) {
return CGRectZero;
}
return cell.frame;
}
のカテゴリとしてUICollectionView
?
#import <UIKit/UIKit.h>
@interface UICollectionView (CellFrame)
-(CGRect)rectForCellatIndexPath:(NSIndexPath *)indexPath;
@end
#import "UICollectionView+CellFrame.h"
@implementation UICollectionView (CellFrame)
-(CGRect)rectForCellatIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [self cellForItemAtIndexPath:indexPath];
if (!cell) {
return CGRectZero;
}
return cell.frame;
}
@end
于 2012-09-20T06:15:35.253 に答える