2013-08-19 127 views
0

我有两个不同的UIViewControllers,并且他们都有UiCollectionView。 我尝试旋转iPad时出现问题。 接下来我在纵向位置UICollectionView旋转动画

enter image description here

当我旋转为横向,我重装我的CollectionView,所以在lanscape模式,我需要有3列

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [self.collectionView reloadData]; 
} 

在第一个的viewController都好,而当collectionView开始旋转控制器仍然有3列

enter image description here

但是当我尝试这样做的另一个控制器,我得到糟糕的情况

enter image description here

它看起来像一个矩两的CollectionView在我看来,然后其中一人正在消失。

我用非标准UICollectionViewFlowLayout,并有相同的方法buils布局

回答

0

你试过调用视图..

  • (无效)的invalidateLayout

你可以在任何调用此方法有时间更新布局信息。此方法使集合视图本身的布局无效并立即返回。因此,您可以从同一代码块多次调用此方法,而不会触发多个布局更新。实际布局更新在下一个视图布局更新周期中发生。

+0

我早试了'[self.collectionView.collectionViewLayout invalidateLayout];'但我有同样的结果 – MaximusAlarmus

+0

奇怪! shouldInvalidateLayoutForBoundsChange: 如果新边界需要布局更新,则询问布局对象。(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds 显然这是**需要**与CollectionViews你打电话给这个? –

-1

你也试过吗?

  • (无效)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { [self.collectionView reloadData]; }
+0

是的,我现在使用它,但它不是解决方案,因为它在某个时刻消失,在动作中旋转时,但我需要旋转而不会丢失collectionView – MaximusAlarmus

-1

我认为我有解决方案,尝试此动画的旋转动画时明白;

  • (无效)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation持续时间:(NSTimeInterval)持续时间{

    [超级willRotateToInterfaceOrientation:toInterfaceOrientation持续时间:持续时间]; [self.collectionView reloadData]; }