Dimensionierung einer UICollectionViewCell, die UITextView enthält, um die contentSize anzupassen

8

Ich habe eine UICollectionView, wobei eine meiner UICollectionViewCells eine UITextView enthält. Mein Ziel ist es, die UICollectionViewCell auf den Inhalt der Textansicht anzupassen.

Ich habe collectionView: sizeForItemAtIndexPath überschrieben, aber ich habe Mühe, den Wert der Inhaltshöhe für die Textansicht zu ermitteln, ohne eine Endlosschleife zu erstellen.

Um ein UITextView automatisch zu vergrößern, würde ich in etwa Folgendes tun:

%Vor%

Aber um das in sizeForItemAtIndexPath zu tun, brauche ich einen Zeiger auf die UITextView. Um diesen Zeiger zu bekommen, finde ich mich cellForItemAtIndexPath, aber da das sizeForItemAtIndexPath aufruft, ist es eine Endlosschleife.

Ich vermute, dass mir ein Weg fehlt, die Ansicht vorher zu skalieren, und die UICollectionView dies nur respektiert, aber es scheint standardmäßig auf den 50x50-Wert zu setzen, den UICollectionViewFlowLayout definiert.

Andere (Hack-) Ideen, die ich verabscheue:

  • Habe noch ein verstecktes UITextView, in das ich den Inhalt laden kann und dessen Höhe ich erreichen kann.
  • Implementieren Sie eine äquivalente Logik, um die Inhaltshöhe selbst zu berechnen.

Danke!

    
John Noonan 15.07.2013, 19:28
quelle

1 Antwort

4

Sie könnten den Delegaten der Auflistungsansicht auch als Delegat der Textansicht festlegen und in textViewDidChange: eine Eigenschaft aktualisieren, die eine aktuelle Höhe enthält, die aus textView.textContainer und textView.textContainerInset berechnet wird. Dann referenzieren Sie einfach diese Eigenschaft in sizeForItemAtIndexPath: . In diesem Fall sollten Sie auch eine Art Neuladen der Zelle durchführen und möglicherweise jedes Mal, wenn sich der Wert dieser Eigenschaft ändert, eine Layout-Invalidierung vornehmen.

    
user1121907 05.07.2014, 04:32
quelle