Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 相同数据的不同视图之间转换的概念_Iphone_Ios_Cocoa Touch_Animation_Uicollectionview - Fatal编程技术网

Iphone 相同数据的不同视图之间转换的概念

Iphone 相同数据的不同视图之间转换的概念,iphone,ios,cocoa-touch,animation,uicollectionview,Iphone,Ios,Cocoa Touch,Animation,Uicollectionview,我有一个网格中的数据,一旦用户触摸到一个项目,布局应该会改变,项目会动画到新的布局 我目前正在为网格使用UICollectionViewFlowLayout。当然,我可以在底部为条带添加新视图,在顶部为细节视图,但我希望为条带中的网格项目设置动画 我是否可以使用UICollectionViewFlowLayout优雅地实现此行为,或者我是否必须为此创建自定义布局和自定义转换(这是我希望避免的)。最持久的方法是为第二个布局创建子类UICollectionViewLayout。然而,您可能不需要子

我有一个网格中的数据,一旦用户触摸到一个项目,布局应该会改变,项目会动画到新的布局

我目前正在为网格使用
UICollectionViewFlowLayout
。当然,我可以在底部为条带添加新视图,在顶部为细节视图,但我希望为条带中的网格项目设置动画


我是否可以使用
UICollectionViewFlowLayout
优雅地实现此行为,或者我是否必须为此创建自定义布局和自定义转换(这是我希望避免的)。

最持久的方法是为第二个布局创建子类
UICollectionViewLayout
。然而,您可能不需要子类化就可以做到这一点,尽管它可能看起来更复杂

其思想是复制绿色单元格的内容,并将其设置为集合视图上方的位置,而不是集合视图中的单元格。您可以使用
[collectionView layoutAttributesForItemAtIndexPath:selectedIndexPath].frame
获取动画起点的帧,并调整集合视图的内容偏移量。当然,您必须使用
[collectionView deleteeitemsatindexpaths:@[selectedIndexPath]]
从集合视图中删除绿色单元格

同时,创建
UICollectionViewFlowLayout
的另一个实例。此实例将
scrollDirection
设置为水平。在
UICollectionViewDelegateFlowLayout
方法中,将节的插入设置为要在其中显示单元格的区域,即
top
的一个非常大的值(您不必设置集合视图框架)。然后,您可以转换到此布局

我想您会发现子类化
UICollectionViewLayout
将更加简单和封装。例如,如果您想在另一个上下文中重新创建此演示文稿,那么使用子类布局将更容易