ios - 下载内部图像后调整 UICollectionView 单元格的大小

标签 ios uicollectionview uicollectionviewcell

我正在构建一个 UICollectionView,我的自定义单元格将包含两个标签和一个图像。

每张图片都是异步下载的,所以在下载完成之前我不知道它的大小。 下载后,我想调整每个单元格以重新布局其内容和框架,以适应刚刚下载的图像的高度。

作为 UICollectionViewLayout,我正在使用 CHTCollectionViewWaterfallLayout

要异步下载图像,我使用 SDWebImage ,像这样:

    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
                   placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                          completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) 
                                {... some completion code here ...}];

问题:

下载图像后立即调整每个 UICollectionViewCell 大小的正确方法是什么?

最佳答案

当图像返回时,您应该能够在动画 block 中使您的 Collection View 布局无效。如果不止一张图像同时完成,事情可能会变得有点复杂,但这应该可行:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                      completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType)^{
                          [UIView animateWithDuration:0.3f animations:^{
                              [self.collectionView.collectionViewLayout invalidateLayout];
                          }];
                      }];

然后在适当的委托(delegate)方法中返回一个不同的尺寸。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return /* a different size if the image is done downloading yet */;
}

关于ios - 下载内部图像后调整 UICollectionView 单元格的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121663/

相关文章:

objective-c - 调用委托(delegate)方法不起作用

ios - 快速 fatal error 中的自定义 CollectionViewCell

ios - 如何在 UICollectionView 的顶部添加一个 View 以支持 objective-c 中的搜索栏或过滤器之类的东西?

ios - 左对齐 UICollectionView

swift - 需要帮助使用 CollectionView 单元格显示从 UIImagePicker 上传到 ImageView 的图像

ios - 如何将数据数据从 Collection View 单元格传递到 View Controller

ios - NSMutableURLRequest 和 "request body stream exhausted"错误

ios - 更快地将图像从 URL 加载到 TableView 单元格中的 ImageView

ios - 如何在 iPhone 模拟器上重置 Twitter 访问权限

ios - 如何在滚动时停止在 Collection View 中重新加载服务器图像?