在哪里确定一个dynamic大小的UICollectionViewCell的高度?
我正在使用UICollectionViewFlowLayout。 我的单元格包含高度(行数)不同的UILabels。
看来获得单元格高度的最好方法是在UICollectionViewCell
的子类中,因为那是我设置布局的位置并且可以访问我的视图的固有尺寸,但是:
collectionView: layout: sizeForItemAtIndexPath:
在collectionView: cellForItemAtIndexPath:
delegate方法之前调用,这意味着我需要知道单元格的高度,然后才能获得单元格的实际布局。
到目前为止,我发现的一切似乎都太复杂了,比如从固定的单元格高度开始,在单元格加载标签之后引用实际高度,然后再次以正确的高度重新加载数据。 有一个更好的方法吗?
很不幸的是,不行。
对于UICollectionView中dynamic大小的项目,您需要知道或计算单元格的大小,然后才能创build。 传统的做法是将每行的数据存储在数组中,然后在collectionView:layout:sizeForItemAtIndexPath:
计算该数据的大小。
例如,如果有一个要显示的文本数组,可以将NSString
对象存储在数组中,在collectionView:layout:sizeForItemAtIndexPath:
测量该string,然后返回大小。 然后, UICollectionView
将获取这个大小,并在configuration单元格视图时调用initWithFrame:
或setFrame:
如果不经常改变,caching这些尺寸也不失为一个好主意。
- 无法强制UIViewController方向
- iPhone:DatePicker dd / mm / yyyy
- CLLocationManager,而应用程序处于后台状态
- 写浮点数组到二进制文件,并迅速读取它
- 加载要在UITableView cellForRowAtIndexPath中使用的数据
- 在iOS应用中安排任务
- 为具有圆angular的UIImageView创build阴影?
- 如何在iOS中绕过itms-services://?action = download-manifest UIAlertView?
- 在Objective C中有NSArray,NSDictionary等类的可变和不可变的版本背后的逻辑是什么?