2012-09-26 22 views
8

希望一個相對較新的UIKit控制當在旋轉適當的時候改變UICollectionView的佈局參數

一個簡單的問題,我有一個UICollectionView具有viewLayout與細胞的單個行中的確切縱向模式下UICollectionView邊界的高度

因此,當iPad翻轉到橫向模式時,該行變得比屏幕本身更高,此時佈局(幾乎)靜默失敗,並且抱怨該行比邊界。

什麼是操縱viewLayout的特性,特別是因爲它涉及在ViewController響應於旋轉的理想方式?

回答

3

我工作的一個類似的問題。

目前,我UICollectionViewController有UICollectionViewFlowLayout的兩個實例變量,每個與波泰特或景觀相應插圖。

在旋轉,我這樣做:

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration{ 

    if (UIDeviceOrientationIsPortrait(toInterfaceOrientation)) { 
     [_itemCollection setCollectionViewLayout:_portraitLayout]; 
     [_itemCollection reloadData]; 
    } else { 
     [_itemCollection setCollectionViewLayout:_landscapeLayout]; 
     [_itemCollection reloadData]; 
    } 
} 

說我遇到的唯一問題是,它隨機與EXC_BAD_ACCESS崩潰的setCollectionViewLayout隨機。

喜歡的東西上面可能爲你工作。我不確定這是否是正確的做事方式。我最近纔開始使用UICollectionViews。

+4

這對我的作品。但不是使用'setCollectionViewLayout',我只是在'sizeForItemAtIndexPath'中修改了我需要的一個屬性。這被稱爲'reloadData'的結果。 –

+1

錯過了[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]。 –