gpt4 book ai didi

ios - 获取嵌入在 ScrollView 中的单元格的中心点

转载 作者:行者123 更新时间:2023-12-01 19:09:18 25 4
gpt4 key购买 nike

我在 ScrollView 中嵌入了一个 UICollectionView:see picture

每个白色方 block 都是一个 Collection View 单元格。用户可以水平滚动以显示其他单元格。

当用户单击一个单元格时,我创建了一个动画,该动画使该单元格从其自身的中心向外扩展,因为过渡到一个新的 View Controller 。

这是代码:

//cell is selected:

//grab snapshot of cell
UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];
UIImage *cellImage = [self imageOfCollectionCell:cell];

//hold the snapshot in this dict
NSMutableDictionary *cellImageDict = [[NSMutableDictionary alloc]init];
[cellImageDict setObject:cellImage forKey:SELECTED_INBOX_EMAIL_IMAGE];
[ViewControllerSnapShotDictionary sharedInstance].vcdict = nil;
[ViewControllerSnapShotDictionary sharedInstance].vcdict = cellImageDict;

//get the center of the cell (HERE IS WHERE THE PROBLEM IS)
CGPoint cellCenter = CGPointMake(cell.center.x, cell.center.y);

//do the animation using the snapshot and cell center
[self startPinchingOutCellFromCenterPoint:cellCenter forTransitionTo:emailController withSnapShotImage:SELECTED_INBOX_EMAIL_IMAGE];

代码工作正常,除非 Collection View 已滚动。动画要求我知道单元格的中心在屏幕上的那一刻,被触摸并相对于我正在查看的 View 的坐标。

例如 ,如果 Collection View 没有滚动,并且我选择了上图的中心单元格,中心可能会返回为:
cell.center.x = 490
cell.center.y = 374

但是,如果我向右滚动,然后选择新的中心单元格,我可能会得到类似的结果:
cell.center.x = 1770
cell.center.y = 374

我的问题是,是否有更好的方法来完成我正在尝试做的事情,或者有没有办法在单元格中心位于 self.view 中的当前位置时获得句柄?

最佳答案

我认为这是因为中心坐标位于 collectionView 的坐标系(滚动)中。您需要将其转换为不滚动的坐标系。

尝试这样的事情:

CGPoint realCenter = [collectionView convertPoint:cell.center 
toView:collectionView.superview];

它的作用基本上是将中心从 collectionView 的坐标系转换为它的父级,它应该是固定的(不滚动)。

您甚至可以通过将 nil 作为参数传递来获取屏幕(窗口)上的坐标:
CGPoint realCenter = [collectionView convertPoint:cell.center 
toView:nil];

由您决定要转换到哪个坐标。

关于ios - 获取嵌入在 ScrollView 中的单元格的中心点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com