2014-02-11 141 views
2

在我的UICollectionView我有一個單元應該佔用整個設備的寬度。這裏是我如何設置項目的大小:UICollectionViewCell的大小和旋轉

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return CGSizeMake(self.view.bounds.size.width, 120); 
} 

我發現在旋轉時,單元格的寬度不會改變。我可以在didRotateFromInterfaceOrientation:中使用[collectionView.collectionViewLayout invalidateLayout]來解決這個問題,但這並不令人滿意。如果用戶在我的應用中的另一個屏幕上旋轉會怎麼樣?我需要將其添加到viewWillAppear。如果旋轉發生在應用程序背景時發生什麼?現在我需要爲UIApplicationDidBecomeActiveNotification通知添加它。

最讓我困惑的是這是而不是對於我的自定義標題在同一個集合視圖中是必需的。以下補充視圖正確重新定位方向變化:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section 
{ 
    return CGSizeMake(self.view.bounds.size.width, 40); 
} 

我在哪裏出錯了?我應該怎麼做才能讓單元格自動重新調整大小以填充集合視圖的寬度?

回答

0

有點晚了,我知道,但你可以通過繼承流佈局和添加?

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds { 
    return TRUE; 
}