Ich habe eine Klasse mit der folgenden Erklärung und Baumeister:UICollectionView insetForSectionAtIndex nicht genannt zu werden
class GameView: UIView, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
{
var collectionView: UICollectionView?
var flowLayout = UICollectionViewFlowLayout()
init (frame : CGRect, navigationController:UINavigationController, parentViewController: ScrambleViewController)
{
super.init(frame : frame)
cvFrame = CGRect(x: cvLeftBorder, y: cvY, width: Int(UIScreen.main.bounds.width) - (2 * cvLeftBorder), height: cvHeight)
collectionView = UICollectionView(frame: cvFrame!, collectionViewLayout: flowLayout);
collectionView!.dataSource = self
collectionView!.delegate = self;
.....
}
Dies ist ein Spiel, wo es eine unterschiedliche Anzahl von Zellen, die jeweils rund ist. Ich möchte die Zellen zu zentrieren, so dass ich eingefügt:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
// calculate the insets and return a UIEdgeInsets
}
Aus irgendeinem Grund wird die Funktion nie aufgerufen. Ansonsten funktioniert das Programm gut. Oder gibt es eine bessere Möglichkeit, die Zellen in jeder Runde zu zentrieren?
Vielen Dank im Voraus.
Haben Sie den Delegaten und die Datenquelle Ihres collectionView wie yourCollectionView.delegate = self/yourCollecti festgelegt onView.datasource = selbst, wie ich klar sehen kann, dass Sie Protokolle von UICollectionView definiert haben. – Tuhin
Danke @unexpectedNil Ich habe mehr relevanten Code in meinem Beitrag hinzugefügt. Im Code habe ich das UICollectionViewFlowLayout im UICollectionView-Konstruktor übergeben. Ich dachte, so könnte man sicherstellen, dass die Layout-Methoden aufgerufen werden. –
Haben Sie das gelöst? Ich habe das gleiche Problem. – Deco