2014-03-04 8 views
8

Meine UICollectionView Zellen werden nicht auf iOS6 angezeigt, weil meine Delegate-Methode cellForItemAtIndexPath nicht aufgerufen wird. Ich vermute, weil diese Warnung:UICollectionView arbeitet mit iOS7, aber nicht mit 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. 

Ich habe nicht die Warnung auf iOS7 erhalten, und alle Zellen auch richtig dort angezeigt werden soll.

Ich habe meine collectionView Rahmen auf Höhe 270 in der .xib und es sind keine Einsätze definiert. Ich habe meine Zellenhöhe im .xib auf 270 eingestellt. Ich kann meine collectionView Rahmen zur Laufzeit ausdrucken und es ist 271.

Auch mein collectionview tatsächlich in einer benutzerdefinierten tableview Zelle ist.

Irgendwelche Ideen? Danke!

Antwort

4

Diese feste mein Problem zu implementieren sein! In meinem .xib, meine Collection Größe Cell Size auf einen kleineren Wert einstellen.

Mein Setup ist, dass ich diese collectionview innerhalb einer benutzerdefinierten tableview Zelle und kehre ich tun, um die Höhe meiner tableview Zelle programmatisch (je nach Inhalt). Also könnte es sein, dass meine Warnungen damit zu tun hatten, dass meine collectionview nicht in die tableview Zelle passt. Daher wurde die ursprüngliche collectionview auf einen kleineren Wert festgelegt.

Ich war auf dem falschen Weg denken, dass das Problem mit meiner collectionview und seine colletionview Zelle war.

Vielleicht?

8

Try self.automaticallyAdjustsScrollViewInsets = NO

Das in eingeführt wurde, so möchten Sie vielleicht wickeln, dass mit einer Versionsprüfung zu setzen, wenn Sie und unten unterstützen.

+0

nicht wirklich klar, warum dies funktioniert, aber es gelöscht nur UICollectionViewFlowLayout Warnung Ich habe für die letzten 2 Stunden debuggen. Vielen Dank! – djibouti33

+0

es funktioniert wirklich gut auf ios7 also leider wird diese Eigenschaft mir in diesem Fall nicht helfen, wie ich das Problem auf ios6 sehe. –

1

Ich fand, dass ich self.collectionView.collectionViewLayout.itemSize in viewWillLayoutSubviews manuell festlegen musste.

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

Eine weitere Möglichkeit, den gleichen Trick zu erzeugen, würde die Methode
collectionView:layout:sizeForItemAtIndexPath:

+0

THX für die Frage bearbeiten. Meine CollectionView ist eigentlich eine Komponente in einer benutzerdefinierten Tabellenansichtszelle. Bit verwirrt, wo diese Codezeile zu platzieren? –

+0

Die viewWillLayoutSubviews eines VC wird immer dann aufgerufen, wenn sich der Hauptframe ändert (während des anfänglichen Layouts, der Rotation usw.). Es ist nur eine Methode, die Sie überschreiben (Standard tut nichts). Ich nehme an, dass dir das in deinem Fall nicht viel bringt. Bei der Fragebearbeitung habe ich das "das" v "als" Tippfehler korrigiert, dann habe ich in einer anderen Frage festgestellt, dass es sich tatsächlich um Apples Tippfehler handelt! – mackworth

+0

haha ​​ja es nervt mich immer diesen Tippfehler zu sehen! Siehe meine Antwort übrigens. –

3
self.automaticallyAdjustsScrollViewInsets = NO 

tat tatsächlich den Trick. Es löste auch mein Problem in swift, wo die Zellen eines horizontalen Fließlayouts einen Rahmen von -32 (???) hatten und nicht richtig in die Sammlungsansicht passten.

0

ich das gleiche Problem haben, ist die Größe der collectionCell in meinem Fall in Storyboard 96x96 und auch unter -(CGSize)collectionView:layout:sizeForItemAtIndexPath:

die Lösung wurde dieser Delegat entfernen:

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

    return insets; 
} 

Und übrigens diese ist unter ios7, es ist spät, aber hoffe, dass dies einigen helfen wird .. Prost ..

-1

Set:

self.itemSize = CGSizeMake(1, 1); 
Verwandte Themen