CollectionViewCell passt nicht immer gleich oft in eine Reihe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • CollectionViewCell passt nicht immer gleich oft in eine Reihe

    Hallo,

    ich versuche das schon seit einigen Stunden und bekomm es einfach nicht hin.

    Es geht darum, dass ich eine CollectionView habe mit custom Cells. Soweit so gut funktioniert alles aber jetzt kommt das komische.

    Wenn ich es im Iphone 11 Simulator anschaue, schaut es super aus, genauso wie ich es haben möchte. 2 Cells pro Reihe aber sobald ich den Iphone 8 Simulator verwende (Bildschirm kleiner) habe ich plötzlich nur noch 1 Cell pro Reihe was dann natürlich sehe.... ausschaut.

    Vielleicht kann mir der ein oder andere etwas auf die Sprünge helfen, hier mein Code dazu:

    Quellcode

    1. let numberOfItemPerRow: CGFloat = 2
    2. let lineSpacing: CGFloat = 5
    3. let interItemSpacing: CGFloat = 5
    4. let width = (collectionView.frame.width - (numberOfItemPerRow - 1) * interItemSpacing) / numberOfItemPerRow
    5. let heigth = width
    6. collectionViewFlowLayout = UICollectionViewFlowLayout()
    7. collectionViewFlowLayout.itemSize = CGSize(width: width, height: heigth)
    8. collectionViewFlowLayout.sectionInset = UIEdgeInsets.zero
    9. collectionViewFlowLayout.scrollDirection = .vertical
    10. collectionViewFlowLayout.minimumLineSpacing = lineSpacing
    11. collectionViewFlowLayout.minimumInteritemSpacing = interItemSpacing
    12. collectionView.setCollectionViewLayout(collectionViewFlowLayout, animated: true)
    Alles anzeigen
  • Ohne es nun zu testen, aber vielleicht ist die Ursache ganz banal: Vielleicht hast Du bei let width = (collectionView.frame.width - (numberOfItemPerRow - 1) * interItemSpacing) / numberOfItemPerRow Probleme mit den Fliesskommaoperationen, so dass der Wert "etwas" zu gross wird (und zwei Zellen nicht mehr passen). Oder die Breite einer CollectionView besteht nicht nur aus den Zellenbreiten und deren inneren Abstand?

    Ich würde das minimumInteritemSpacing mal testweise um 1.0 verkleinern.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • MyMattes schrieb:

    Ohne es nun zu testen, aber vielleicht ist die Ursache ganz banal: Vielleicht hast Du bei let width = (collectionView.frame.width - (numberOfItemPerRow - 1) * interItemSpacing) / numberOfItemPerRow Probleme mit den Fliesskommaoperationen, so dass der Wert "etwas" zu gross wird (und zwei Zellen nicht mehr passen). Oder die Breite einer CollectionView besteht nicht nur aus den Zellenbreiten und deren inneren Abstand?

    Ich würde das minimumInteritemSpacing mal testweise um 1.0 verkleinern.

    Mattes
    Das war das Problem, danke für den Hinweis!