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
将更加简单和封装。例如,如果您想在另一个上下文中重新创建此演示文稿,那么使用子类布局将更容易