我试图获取对集合视图中第一个单元格的引用以便移动它(为了某些效果)。
首先,您可以移动集合内的某个单元格吗?
第二,我现在如何检查它是否在可见的矩形上? (细胞可重复使用)。
错误:当我这样做时,我将索引路径设置为非零时出现错误
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:4];//E
CGRect cellRect = cell.frame;
NSLog(@"%f",cellRect.origin.y);
}
"在ARC"。
中不允许隐式转换int当它设置为0时,即使单元格在屏幕外,我总是得到0的位置。
我想我错过了获得第一个细胞的正确方法..
答案 0 :(得分:7)
您应该创建NSIndexPath的实例以使用cellForItemAtIndexPath
示例强>
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:4 inSection:0];
UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];
CGRect cellRect = cell.frame;
}
答案 1 :(得分:2)
Swift 3版本代码:基于Luca Bartoletti回答
func scrollViewDidScroll(scrollView: UIScrollView) {
let indexPath = IndexPath(item: 4, section: 0)
var cell = self.collectionView.cellForItem(at: indexPath)
var cellRect = cell.frame
}