UICollectionView在转换期间为各个项目设置动画

时间:2014-01-21 10:26:51

标签: ios ios7 uicollectionview custom-transition

当我转换到子视图控制器时,是否可以在UICollectionView中单独为每个项目制作动画?我有一个UICollectionViewController,当一个项目被选中时,我希望该项目周围的所有项目都从所选项目中反弹。

1 个答案:

答案 0 :(得分:0)

您所描述的内容听起来像是UICollectionView中的layoutTransition。我的建议是通过继承UICollectionViewLayout并覆盖

来创建一个新的布局

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath

在那里,您可以修改项目的框架以创建您正在寻找的效果。特别是,您可以跟踪所选的indexPath并保持该项不受影响。其余的你可以做这样的事情:

CGRect selectedItemFrame = [[super layoutAttributesForItemAtIndexPath:self.selectedIndexPath] frame];

CGFloat xOffset = attributes.frame.origin.x <= selectedItemFrame.origin.x ? -400.0 : 400.0;
CGFloat yOffset = attributes.frame.origin.y <= selectedItemFrame.origin.y ? -600.0 : 600.0;
CGRect newFrame = CGRectOffset(attributes.frame, xOffset, yOffset);
attributes.frame = newFrame;

然后,只需触发从一个布局到另一个布局的转换。