iOS will mich mal wieder ärgern...
Ich habe eine CollectionView, welche teils Zellen mit der ganzen Screen-Breite hat.
Rotiere ich nun von Landscape zu Portrait, meckert es in der Console:
Ich habe jetzt mal testweise einfach eine feste cellSize für alle Cells in der DataSource hinterlegt:
Zusätzlich lass ich das Layout neu berechnen bei der Rotation
Der Witz an der Sache ist, dass ich sehe wie sich das Layout richtig animiert während der Drehung.
Ich habe Labels in den Cells, welche per horizontalen Center-Constraints in der Mitte gehalten werden.
Das passt sowohl vor als auch nach der Drehung und die Cell-Breite verändert sich während der Animation.
Die Cellbreite stimmt laut print-Konsolenausgaben auch vor und nach der Drehung.
Es scheint also einfach die Zelle während der Animation zu spät verkleinert zu werden,
so dass das System sich zu der Ausgabe genötigt sieht.
Was kann man noch falsch machen, bzw. wie bekomme ich diese Meldungen in den Griff?
Ich habe eine CollectionView, welche teils Zellen mit der ganzen Screen-Breite hat.
Rotiere ich nun von Landscape zu Portrait, meckert es in der Console:
Bei der Drehung von Portrait zu Landscape gibt es keine Logausgaben.the behavior of the UICollectionViewFlowLayout is not defined because:
the item width must be less than the width of the UICollectionView minus the section insets left and right values, minus the content insets left and right values.
Ich habe jetzt mal testweise einfach eine feste cellSize für alle Cells in der DataSource hinterlegt:
Quellcode
- override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
- super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
- coordinator.animateAlongsideTransition({ (context) -> Void in
- self.collectionViewLayout.invalidateLayout()
- }) { (context) -> Void in
- }
- }
Der Witz an der Sache ist, dass ich sehe wie sich das Layout richtig animiert während der Drehung.
Ich habe Labels in den Cells, welche per horizontalen Center-Constraints in der Mitte gehalten werden.
Das passt sowohl vor als auch nach der Drehung und die Cell-Breite verändert sich während der Animation.
Die Cellbreite stimmt laut print-Konsolenausgaben auch vor und nach der Drehung.
Es scheint also einfach die Zelle während der Animation zu spät verkleinert zu werden,
so dass das System sich zu der Ausgabe genötigt sieht.
Was kann man noch falsch machen, bzw. wie bekomme ich diese Meldungen in den Griff?