在[UIViewControllerTransitionCoordinator animateAlongsideTransition]中指定动画选项

时间:2015-01-20 17:18:56

标签: ios animation rotation uicollectionview

我有一个使用UICollectionView的iPad应用。在iOS 8上,当设备旋转时,在我的主视图控制器的viewWillTransitionToSize中,我在animateAlongsideTransition参数上调用id<UIViewControllerTransitionCoordinator>并为框架设置动画更改主视图中的各种视图,其中一个其中包含集合视图。

在iOS 7中,我使用willRotateToInterfaceOrientation:duration:通过[UIView animateWithDuration:delay:options:animations:completion:]调用来动画帧更改。我将UIViewAnimationOptionLayoutSubviews作为options参数传递,并且集合视图在调整项目大小时动画显示其项目的重新布局。但是在带有animateAlongsideTransition的iOS 8上,只有最顶层的视图会被动画化;它的所有子视图,包括集合视图及其单元格,都只是闪烁到新的大小/帧。

我的问题:如何使用UIViewAnimationOptionLayoutSubviews [animateAlongsideTransition]使用或实现{{1}}的效果?

1 个答案:

答案 0 :(得分:0)

在Apple的AdaptivePhotos示例中,他们仅调用setNeedsLayout

AAPLProfileViewController.m

- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator
{
    [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
    [coordinator animateAlongsideTransition:^(id <UIViewControllerTransitionCoordinatorContext> context) {
        [self updateConstraintsForTraitCollection:newCollection];
        [self.view setNeedsLayout];
    } completion:nil];
}