我正在为 UICollectionView 中的单元格大小而苦苦挣扎。在 android 中,您可以轻松地“包装”单元格的大小。就像在 iOS 中一样,您有一个名为“GetCell”的函数,您可以决定它有多大。
iOS 的不同之处在于,在(UICollectionViewController 的)“getCell”函数中,您似乎无法选择单元格(或内容视图)的大小。如果我更改大小,它将忽略它并使用 CollectionView 的一般“ItemSize”(所有单元格都相同)。
这有时会导致视图不是很漂亮。例如,如果我有一个包含图像的水平列表,我希望图像之间的距离相同,如果一个图像是 200x200 而另一个是 400x200,则独立。所以单元格大小也应该不同。
可以为不同的单元格定义不同的大小。您可以使用 Collectionview 委托和 GetSizeForItem(= ObjC 中的 sizeForItemAtIndexPath)函数。问题是,这个函数是在实际的 GetCell 函数之前调用的。
因此,如果我有一个更复杂的单元格,例如一些标签。在我的“GetCell”函数中,我构建了这个 Cell,最后,当返回 Cell 时,我知道它应该是什么大小。但是,在 GetSizeForItem 函数中,该信息尚不可用,因为 Cell 仍为“空”。
我能做到的唯一方法是在调用“GetSizeForItem”时为单元格实际构建 UIView(以便我可以请求大小)。但这似乎不是一个好的设计,因为我在“GetCell”之前构建 UIView,我将在其中再次构建它。
有什么我忽略的吗?
问候, 马特