2016-05-25 5 views
0

Entsprechend der Dokumentation von Apple sollte minimumLineSpacing von der UICollectionFlowLayout-Klasse den Abstand zwischen zwei Zeilen innerhalb Ihrer UICollectionView bestimmen.Swift - minimumLineSpacing in UICollectionViewLayout zum Anpassen des Zeilenzwischenraums

Ich habe das UICollectionFlowLayout subclassiert und diese Klasse mit meiner UICollectionView verbunden. Unabhängig davon, welchen Wert ich für minimumLineSpacing gesetzt habe, habe ich keine Auswirkungen auf das Aussehen von CollectionView.

Wie lege ich den Zwischenraum zwischen Zeilen fest?

// My subclassed UICollectionViewFlowLayout 
import UIKit 

class CustomImageFlowLayout : UICollectionViewFlowLayout{ 

    override init(){ 
     super.init() 
     setupLayout() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init() 
     setupLayout() 
    } 

    func setupLayout(){ 
     self.minimumInteritemSpacing = 1 // <-- this works just fine 
     self.minimumLineSpacing = 55 // <-- no matter what this value is nothing changes. 
     scrollDirection = .Vertical 
    } 

    override var itemSize: CGSize{ 
     set{ 

     } 

     get{ 
      let numberOfColumns: CGFloat = 3 

      let itemWidth = (CGRectGetWidth(self.collectionView!.frame) - (numberOfColumns - 1))/numberOfColumns 
      return CGSizeMake(itemWidth, itemWidth) 
     } 
    } 
} 
+0

Ich glaube nicht 'UICollectionViewFlowLayout' ist so ausgelegt zu sein, su bclassed. Ich kann mir einige Gründe vorstellen, warum die Art, wie Sie "itemSize" überschreiben, ein Problem verursachen könnte. Warum erstellst du nicht einfach ein einfaches altes 'UICollectionViewFlowLayout' und setze seine Eigenschaften oder koordinierst du mit seinem' delegate', wie die Klasse funktioniert? –

+0

Ich habe deine Empfehlung ausprobiert, aber ich habe genau das gleiche Ergebnis. Warum wird nicht empfohlen, UiCollectionFlowLayout abzuleiten? –

+0

Die Dokumente sind nicht spezifisch, aber sie beschreiben es als "konkret" vs. "abstrakt". Sie zeigen auch keine "Unterklassen-Notizen", die in anderen Klassen üblich sind. Können Sie Ihre Frage mit Ihrem neuen Ansatz aktualisieren? –

Antwort

0

unten Funktion hinzufügen in Ihrem UICollectionViewDelegate

SWIFT

optional func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat 

Objective-C

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section 
Verwandte Themen