Ich habe eine UICollectionView mit einem FlowLayout eingerichtet, die keinen Raum zwischen den Zellen in vertikaler oder horizontaler Richtung lässt.UICollectionView 3 Spaltenraster, 1px Platz? (Bild enthalten)
Ich habe alles funktioniert, aber es gibt eine ungerade 1px Platz zwischen der 2. und 3. Spalte und ich habe keine Ahnung warum !? Ich habe festgestellt, dass die 1px-Lücke sowohl im iOS-Simulator als auch auf einem echten Gerät auftaucht. Hat jemand das erlebt?
Mein UIViewController ist ein Delegierter/Datenquelle der folgenden Optionen:
class MyViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
ich die notwendigen Funktionen implementiert habe keinen Abstand zu entfernen (und mit print-Anweisungen überprüft, dass sie ausgeführt werden), sowie visuelle Bestätigung der Zellen entlang nebeneinander up:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
return UIEdgeInsetsZero
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
Schließlich habe ich die Breite der Zelle ausgedruckt (jede Farbquadrat) zurückgeführt wird, um sicherzustellen, war es diedieoder (320/3)
ist 106,666667
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var totalHeight: CGFloat = (self.view.frame.width/3)
var totalWidth: CGFloat = (self.view.frame.width/3)
println(totalWidth) // this prints 106.666666667
return CGSizeMake(totalWidth, totalHeight)
}
Haben Sie eine bessere Lösung als die unten genannten gefunden? – BlueBoy
@BlueBoy Ich habe nicht. Die Lösung, mit der ich gehe, besteht darin, zwei der Säulen zu einer Decke oder einem Boden von (Breite/3) zu machen und dann die dritte Spalte auf den Rest einzustellen. – Alex
Wie machst du nur zwei der Säulen eine Decke? – BlueBoy