UICollectionView があり、UICollectionViewCells の 1 つに UITextView が含まれています。私の目標は、テキスト ビューのコンテンツに合わせて UICollectionViewCell のサイズを自動調整することです。
collectionView:sizeForItemAtIndexPath をオーバーライドしましたが、無限ループを作成せずにテキスト ビューのコンテンツの高さの値を取得するのに苦労しています。
通常、UITextView のサイズを自動調整するには、次のようにします。
CGRect frame = textView.frame;
frame.size.height = textView.contentSize.height;
textView.frame = frame;
しかし、sizeForItemAtIndexPath 内でそれを行うには、UITextView へのポインターが必要です。そのポインタを取得するために cellForItemAtIndexPath を呼び出していることに気が付きましたが、それは sizeForItemAtIndexPath を呼び出すため、無限ループです。
ビューのサイズを事前に設定し、UICollectionView にそれを尊重させる方法が欠けていると思われますが、UICollectionViewFlowLayout が定義する 50x50 の値にデフォルト設定されているようです。
私がやりたくない他の(ハック)アイデア:
- コンテンツを読み込んで高さを取得できる別の非表示の UITextView を用意します。
- 自分でコンテンツの高さを計算する同等のロジックを実装します。
ありがとう!