2014-05-11 71 views
0

我想在程序滾動到單元格後獲得UICollectionViewCell的位置。我正在像這樣設置滾動位置。在scrollToItemAtIndexPath之後獲取UICollectionView單元格位置

[self.collectionView scrollToItemAtIndexPath:indexPath 
          atScrollPosition:UICollectionViewScrollPositionCenteredVertically 
             animated:NO]; 

我會那麼喜歡拿我已滾動到,因爲我需要定位另一個UIView它附近小區的幀。

此代碼返回單元格的滾動視圖的矩形,但我需要在可見矩形內的位置。

UICollectionViewLayoutAttributes *attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath]; 
CGRect cellRect = attributes.frame; 

回答

5

單元格的框架沒有改變,它是封閉滾動視圖的內容偏移量。從框架原點減去contentOffset以獲得屏幕上的位置,或使用convertRect:方法之一在相關視圖中獲取座標。

+0

感謝。或者,在設置滾動位置之後,是否可以立即獲取對該單元格的引用? cellforitematindexpath此時返回nil。 – Shocks

+0

它返回零,因爲當時單元格不在屏幕上。您現有的解決方案可能很好。 – jrturton

0

這裏是小區X和中心值

UICollectionViewLayoutAttributes *attributes = [collectionView layoutAttributesForItemAtIndexPath:indexPath]; 
CGPoint cellCenterPoint = attributes.center; 
CGPoint contentOffset = [collectionView contentOffset]; 
NSLog(@"%f , %f",-1*contentOffset.x , cellCenterPoint.x); 
int relativeCellCenter = (-1*contentOffset.x) + cellCenterPoint.x +collectionView.frame.origin.x; 
int relativeX = (-1*contentOffset.x) +collectionView.frame.origin.x; 
相關問題