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:
Danke!
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.
Tags und Links ios uicollectionview uicollectionviewcell uitextview cocoa-touch