我有一个使用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}}的效果?
答案 0 :(得分:0)
在Apple的AdaptivePhotos示例中,他们仅调用setNeedsLayout
:
- (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];
}