如何在屏幕旋转后跟踪UICollectionView中单元格的移动

时间:2013-10-25 18:55:13

标签: ios objective-c uicollectionview uicollectionviewcell

我有一个UICollectionView。当我触摸其中一个单元格时,我会从其位置显示一个弹出视图,箭头指向该单元格,并提供有关该单元格的一些额外信息。

当我旋转设备时,UICollectionView会自动重新定位其单元格。

我想做的是自动重新定位我的弹出视图,使其指向与之前相同的单元格(现在位于UICollectionView中的不同位置)

我遇到的问题是跟踪(找出)我的单元格的新位置,因此我可以从单元格的新位置手动表示弹出窗口视图。

我尝试为单元格附加和存储“idString”以进行比较,但由于某种原因,这会在屏幕旋转之前返回单元格的旧框架

NSArray* visibleCells = [UIAppDelegate.ocollectionView visibleCells];

for (UICollectionViewCell *cell in visibleCells) {
    if ([cell.idString isEqualToString:self.idString] ) {
        NSLog (@"we have a match!!! %@", cell);
        CGRect rectInCollectionView = cell.frame;
        rect = [UIAppDelegate.collectionView convertRect:rectInCollectionView toView:[UIAppDelegate.collectionView superview]];
    }
}

任何想法都赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

这个代码放在哪里?我想它应该放在像这样的委托方法上:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;

所以UICollectionView重新绘制了新单元格的位置。