2014-03-04 58 views
8

我的UICollectionView單元格不會在iOS6上顯示,因爲我的委託方法cellForItemAtIndexPath未被調用。我懷疑,因爲這一警告的:UICollectionView在iOS7上工作,但不在iOS6上

the behavior of the UICollectionViewFlowLayout is not defined because: 
the item height must be less that the height of the `UICollectionView` 
minus the section inset's top and bottom values. 

我沒有得到iOS7警告,所有的細胞顯示正常也有。

我已將collectionView框架設置爲.xib中的高度270,並且沒有定義任何插槽。 我在.xib中將我的細胞高度設置爲270。 我可以打印出在運行時我collectionView框架和它的271

而且,我collectionview實際上是一個自定義tableview細胞內。

任何想法? 謝謝!

回答

4

這個固定我的問題!在我的.xib中,將我的收藏視圖大小單元格大小設置爲較小的值。

我的設置是,我有這個collectionview定製tableview細胞內和 我回來我tableview細胞的高度編程(取決於內容)。所以可能是我的警告與我的collectionview不適合tableview單元格有關。因此將初始collectionview設置爲較小的值可以修復它。

我錯誤地認爲問題出在我的collectionview及其colletionview單元格上。

也許吧?

8

嘗試設置self.automaticallyAdjustsScrollViewInsets = NO

這在推出,所以你可能想換行與版本檢查,如果要支持及以下。

+0

真不明白爲什麼這個工作,但它只是清除了UICollectionViewFlowLayout警告我已經調試在過去的兩小時。謝謝! – djibouti33

+0

它實際上工作正常在ios7上,所以不幸的是,這個屬性不會幫助我在這種情況下,因爲我看到了ios6上的問題。 –

1

我發現我不得不在viewWillLayoutSubviews中手動設置self.collectionView.collectionViewLayout.itemSize

- (void)viewWillLayoutSubviews { 
    self.collectionView.collectionViewLayout.itemSize = CGRectMake(...); 
} 

另一種可能產生同樣的伎倆將是實現該方法
collectionView:layout:sizeForItemAtIndexPath:

+0

thx爲問題編輯。我的collectionview實際上是一個自定義tableview單元格中的一個組件。有點混淆在哪裏放置這行代碼? –

+0

VC的viewWillLayout當主框架發生變化時(初始佈局,旋轉等),調用子視圖。這只是你重寫的一種方法(默認不做任何事)。我猜你對你的情況不會有太大的幫助。在編輯問題上,我修正了「那」v「而不是」錯字,然後我在另一個問題上注意到它實際上是蘋果的錯字! – mackworth

+0

哈哈是的,它總是讓我看到這個錯字!看到我的答案btw。 –

3
self.automaticallyAdjustsScrollViewInsets = NO 

實際上做了詭計。它也快速解決了我的問題,水平流佈局的單元格的頂部爲-32(???),並且不適合集合視圖。

0

我有同樣的問題,在我的情況collectionCell的故事板的尺寸爲96×96,也下-(CGSize)collectionView:layout:sizeForItemAtIndexPath:

溶液去除此委託:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
{ 
    UIEdgeInsets insets = {.left = 10, .right = 10, .top = 5, .bottom = 5}; 

    return insets; 
} 

順便說這是在ios7下,它已經很晚了,但希望這會幫助一些..乾杯..

-1

集:

self.itemSize = CGSizeMake(1, 1); 
相關問題