3

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

干杯,

4

2 回答 2

4

只是为了记录,现在有一个-setCollectionViewLayout:animated:completion:方法 on UICollectionView,在 iOS 7 中引入。

于 2013-10-19T17:09:08.487 回答
3

我发现为了能够控制动画,而不是使用隐式动画,setCollectionViewLayout:animated:您可以使用标准 UIViewanimationWithDuration并更改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;
                 }];

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

于 2012-11-29T23:22:36.533 回答