UICollectionViewのセルのサイズに少し苦労しています。Androidでは、セルのサイズを簡単に「ラップ」できます。iOSの場合と同様に、「GetCell」という関数呼び出しがあり、その大きさを決定します。
iOSとの違いは、(UICollectionViewControllerの) "getCell"関数では、セル(またはcontentview)のサイズを選択できないように見えることです。サイズを変更すると、それは無視され、とにかくCollectionViewの一般的な「ItemSize」が使用されます(これはすべてのセルで同じです)。
これにより、ビューがあまり美しくない場合があります。たとえば、画像を含む水平方向のリストがある場合、一方の画像が200x200で、もう一方の画像が400x200の場合、画像間の距離を同じにします。したがって、セルサイズも異なる必要があります。
セルごとに異なるサイズを定義することができます。CollectionviewデリゲートとGetSizeForItem(= ObjCではsizeForItemAtIndexPath)関数を使用できます。問題は、この関数が実際のGetCell関数の前に呼び出されることです。
したがって、たとえばいくつかのラベルを含む、より複雑なセルがある場合。「GetCell」関数でこのセルを作成し、最後にセルを返すときに、どのサイズにする必要があるかを確認します。ただし、GetSizeForItem関数では、セルがまだ「null」であるため、その情報はまだ利用できません。
私がそれを行うことができる唯一の方法は、「GetSizeForItem」呼び出しの瞬間にセルのUIViewを実際に構築することです(サイズを要求できるように)。しかし、これは良い設計ではないようです。これは、UIViewを「GetCell」の前に構築していて、そこで再度構築するためです。
見落としているものはありますか?
よろしく、マット