更改UICollectionViewLayout时检测隐式动画的结束

时间:2012-11-29 13:57:46

标签: objective-c ios uicollectionview

我目前正在使用UICollectionView并使用setCollectionViewLayout将布局从一个更改为另一个:animated:我想在动画完成时执行一些代码。知道如何实现这个目标吗?

干杯,

2 个答案:

答案 0 :(得分:4)

仅供记录,现在在iOS 7中引入了-setCollectionViewLayout:animated:completion: UICollectionView方法。

答案 1 :(得分:3)

我发现能够控制动画,而不是使用setCollectionViewLayout:animated:的隐式动画,您可以使用标准的UIView animationWithDuration并更改animations块中的布局,像这样:

[UIView animateWithDuration:0.4
                      delay:0
                    options:UIViewAnimationCurveEaseOut
                 animations:^{
                     self.oldView.collectionViewLayout = self.otherLayout;
                     self.newView.alpha = 1.0;
                 }
                 completion:^(BOOL finished){
                     self.oldView.alpha = 0.0;
                     self.otherLayout = nil;
                 }];

我不知道这是否是推荐的方法,但它可以让你控制动画并在完成时执行代码。