1

Ich versuche, horizontal scrollende Sammlungsansicht mit nur einer Zeile zu erreichen. Als ich die einfachste Weg, das zu erreichen herausgefunden ist, um benutzerdefinierte Flow Layout vorbereiten:minimumInteritemSpacing fügt seltsamen Inhalt am Ende der Sammlungsansicht hinzu

class CollectionViewLayoutHorizontal : UICollectionViewFlowLayout { 
    override init() { 
     super.init() 
     //that enables self-sizing cells 
     self.estimatedItemSize = CGSize(width: 1, height: 1) 
     self.scrollDirection = .horizontal 
     //that one should ensure that only one line fits 
     //using CGFloat.greatestFiniteMagnitude aka CGFLOATMAX breaks collection view completely 
     self.minimumInteritemSpacing = 1000 
     self.minimumLineSpacing = 10 
    } 
} 

meine Zellen sind alle richtig angezeigt - sie sind Orte, nebeneinander, auch in der Mitte der Sammlung Ansicht, wenn sie viel kleiner sind . Aber das Problem ist, gibt es einen zusätzlichen leeren Raum am Ende (nach der letzten Zelle), die die Größe von minimumInteritemSpacing ist, was etwas Unerwartetes ist.

Kann jemand dieses Problem lösen?

bug

Antwort

0

Set minimumInteritemSpacing = 0 (oder einen kleinen Wert, der am Ende der Scroll zu Ihrer Sammlung Design paßt), wenn Sie Platz in der Sammlung Ansicht nicht festlegen müssen Hinter.

Bei einem vertikal scrollenden Raster gibt der Wert minimumInteritemSpacing den Mindestabstand zwischen Elementen in derselben Zeile an.

Bei einem horizontal scrollenden Raster repräsentiert der Wert minimumInteritemSpacing den minimalen Abstand zwischen Elementen in derselben Spalte.

minimumInteritemSpacing Der Abstand wird verwendet, um zu berechnen, wie viele Elemente in eine einzelne Zeile passen. Wenn die Anzahl der Elemente jedoch festgelegt wurde, kann der tatsächliche Abstand möglicherweise nach oben angepasst werden.

Weitere Informationen finden sich Apple Developer Dokument: minimumInteritemSpacing

+0

Es gibt ein Problem, wenn ich das tun - Elemente werden nicht in einer Zeile :(hier prüfen ausrichten werden: http://pasteboard.co/MVOX44fyc.png –

+0

Teilen Sie diesen Screenshot hier .. – Krunal

+0

Der Grund Ich fing an, mit diesem Wert zu spielen, um Elemente trotz ihrer Größe zu zwingen, in einer Linie zu sein. –

0

versuchen, dies zu implementieren durch:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 

    return CGSizeMake(70, 60); 
} 

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ 
    return UIEdgeInsetsMake(0, 0, 0, 0); 
} 

und legen Sie den Fluss Layout der Sammlung Ansicht:

-(void)setCollectionViewLayout { 

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init]; 
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal; 
flow.minimumInteritemSpacing = 5; 
flow.minimumLineSpacing = 5; 

[yourCollectionview setCollectionViewLayout:flow]; 

}

Hinweis: Meine Sammlungsansicht hat konstante Höhe.

+1

Das wird nicht alle meine Zeiten in einer Zeile platzieren - es wird sie wie hier ausrichten http://pasteboard.co/MVOX44fyc.png –

Verwandte Themen