2013-08-19 175 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]; }