1

Ich habe ein Bild zu UICollectionViewCell hinzugefügt und Randbedingungen wie das folgende Bild hinzugefügt.Bildansicht, die in der Sammlungsansichtszelle hinzugefügt wurde, fügt keine hinzugefügten Beschränkungen hinzu

Cell With Constraints

Constraints:

  • Breite von Image = Breite der Zelle
  • Höhe Image = Höhe der Zelle
  • Align Image vertikal in Behältern (Cell)
  • Richten Sie ImageView horizontal im Container (Zelle)
  • aus

Ich entscheide mich zur Laufzeit über die Methode UICollectionViewDelegate für die Zellengröße.

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
{ 
    // calculating cell size and returning it 
} 

Ausgabe:

Im cellForItemAtIndexPath Methode, wenn ich die Zellengröße und Bildbetrachtungsgröße beide unterschiedliche Werte überprüft. Zelle {w: 82.0, h: 145.77}, ImageView {w: 380.0, h: 170}. Das Bild hat die gleiche Bildgröße wie auf dem Storyboard. Es passt sich nicht an die Einschränkungen an. Kann ich trotzdem sicherstellen, dass es die gleiche Größe meiner Zelle hat?

Aktuelle Fix: (?)

cell.imageView.frame = cell.bounds 

Aber es macht keinen Sinn. Warum muss ich die Größe explizit festlegen, warum die Einschränkungen nicht angewendet wurden?

Antwort

0

prüfen diese Antwort von Marius Soutier: UICollectionView: different size items is not calculated on reused items

Der Kommentar unterhalb seiner Antwort ist wahrscheinlich die Lösung, die Sie suchen.

Grundsätzlich müssen Sie reloadData anrufen, bevor Sie Ihre CGSize von sizeForItemAtIndexPath: zurückgeben.

+0

Nein, dass Link nicht hilft. Wie ich in meiner Frage gesagt habe, bekomme ich korrekte Zellengröße, das Problem tritt für die UIImageView auf (die die hinzugefügten automatischen Layoutbeschränkungen nicht anwendet). –