2012-12-07 7 views
6

Ich Unterklasse UICollectionViewLayout. So weit, ist es gut.
Allerdings habe ich einige Zellen, die breiter sind als der Bildschirm, und manchmal verschwinden diese beim Scrollen. Wenn Sie weiter blättern, tauchen sie wieder auf magische Weise auf, wo sie sein sollten. Ich kann Ihnen meinen Code zeigen, aber ich denke, es ist nichts falsch daran, da es in 90% der Fälle funktioniert. Allerdings verschwinden wirklich große Zellen (mehr als zweimal die Bildschirmgröße) manchmal.Große UICollectionViewCell verschwindet mit benutzerdefinierten Layout

NSMutableArray* attributes = [NSMutableArray array]; 
for (int section=0; section < [[self collectionView] numberOfSections]; section++) { 
    [attributes addObject:[self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader atIndexPath:[NSIndexPath indexPathForItem:0 inSection:section]]]; 
     for (int row=0; row < [[self collectionView] numberOfItemsInSection:section]; row++) { 
      NSIndexPath* indexPath = [NSIndexPath indexPathForItem:row inSection:section]; 
      [attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]]; 
     } 
} 
return attributes; 

Ich habe auch diese Beiträge: UICollectionView's cell disappearing und Large cells in a UICollectionView getting removed while the cell is still displayed Allerdings ist eine Lösung nicht erwähnt. Kann mir jemand dabei helfen? Könnte es sein, dass das Problem auf Apples Seite ist? Und wenn ja, kann ich etwas tun, um es selbst zu lösen?

Antwort

5

Entschuldigen Sie bitte, ich bin mir ziemlich sicher, dass dies ein echter Fehler in UICollectionView ist; Ich bin vor ein paar Wochen auf genau dasselbe gestoßen. Ich habe ein kleines Programm gemacht, um den Bug zu demonstrieren und habe einen RADAR mit Apple eingereicht, aber ich habe noch nicht mitbekommen, ob oder ob sie es reparieren wollen. Die beste Problemumgehung, die ich mir vorstellen kann (Warnung: Ich habe diese Problemumgehung noch nicht implementiert), wenn Sie feststellen, dass die Layoutattribute sehr weit von den Bildschirmrändern entfernt sind, ändern absichtlich die Grenzen der Zellattribute, sodass sie nur geringfügig abfallen Bildschirm, und möglicherweise speichern Sie diesen Offset (die Menge, die Sie abgeschnitten von dem, was die tatsächlichen Grenzen sein sollten) als zusätzliches benutzerdefiniertes Feld in den LayoutAttributes, so dass Ihre Zelle weiß, um den Inhalt korrekt zu zeichnen. Was sich wie ein grober Hack anfühlt, aber es sollte funktionieren.

+0

Haben Sie schon wieder in der dazwischenliegende Zeit? –

0

Sind Sie sicher, dass Sie das richtige Attributobjekt für diese Zelle zurückgeben, wenn die Methode -(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect aufgerufen wird und wenn das Rect nur ein Teil Ihrer Zelle ist?

+0

Benutzer melden auch Probleme mit sehr großen Zellen. Siehe: http://StackOverflow.com/Questions/13016302/large-cells-in-a-uicollectionview-getting-removed-while-the-cell-is-still-displa?rq=1 – CitronEvanescent

Verwandte Themen