从Internet下载图像时计算UICollectionViewCell高度

时间:2013-07-31 08:56:14

标签: iphone ios uicollectionview

我想使用CHTCollectionViewWaterfallLayout创建一个水瀑布。我注意到在演示中单元格高度是固定的,它在一个数组中。但是,现在,我有一个图像网址,我想在屏幕上显示它,但高度不知道。因此,heightForItemAtIndexPath数据源不起作用。如何在下载之前计算某个图像网址的高度。或者,我可以在计算高度时在cellForItemAtIndexPath数据源方法中下载和显示图像,并在heightForItemAtIndexPath数据源方法中设置单元格高度吗?怎么做?

1 个答案:

答案 0 :(得分:2)

如果图像是从您自己的服务器下载的,那么我建议首先发送显示图像尺寸的元数据,并在下载图像之前使用它来计算高度。

如果图像不在您的服务器上,那么最好的解决方案是添加BOOL数组,指示是否下载了相应的图像,如果下载,调整高度,如果没有,则使用默认高度。

并在您的单元格中添加一个委托,在加载图像时调用以下方法:

- (void) ImageLoadedAtIndexPath:(NSIndexPath)indexPath {

     [self.tableView beginUpdates];
     [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationNone];
     [self.tableView endUpdates];

}

希望它有所帮助。