如何使用填充单元格的 UIImageView 初始化自定义 UICollectionViewCell?

Posted

技术标签:

【中文标题】如何使用填充单元格的 UIImageView 初始化自定义 UICollectionViewCell?【英文标题】:How do I initialize a custom UICollectionViewCell with a UIImageView that fills the cell? 【发布时间】:2014-04-27 22:32:37 【问题描述】:

我正在尝试使用自定义 UICollectionViewCells 实现侧滚动 UICollectionView。每个自定义单元格都包含一个应该填充单元格的 UIImageView。现在我正在像这样设置 UIImageView 的大小,

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

static NSString *cellID = @"cellID";
THCVCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath]; 
cell.imageView.image = [self.images objectAtIndex:(indexPath.row % [self.images count])];
cell.imageView.frame = cell.bounds;

return cell;  

但 UIImageView 不会填充单元格,直到单元格出列以供重用。

我应该改变什么以使 UIImageView 在单元格首次显示时显示为应有的样子?

【问题讨论】:

【参考方案1】:

如果在THCVCell.m 内部,您添加了如下内容:

- (void) layoutSubviews 
    _imageView.frame = self.contentView.bounds;

这样,如果单元格改变大小,imageView 会适应。

然后删除:

cell.imageView.frame = cell.bounds;

【讨论】:

谢谢洛根!这是一个快速修复。我的应用现在运行良好。 很高兴听到它的工作,祝你项目的其余部分好运!【参考方案2】:

尝试以下操作,这将使 imageView 随单元格调整大小而调整。

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

static NSString *cellID = @"cellID";
THCVCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath]; 
cell.imageView.image = [self.images objectAtIndex:(indexPath.row % [self.images count])];
cell.imageView.frame = cell.contentView.bounds;
cell.imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

return cell;  

【讨论】:

以上是关于如何使用填充单元格的 UIImageView 初始化自定义 UICollectionViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 填充整个 UICollectionView 单元格

根据变量使用不同的图像初始化 UIImageView

TableViewCell 上的 UIImageView 缺少单击单元格的约束

如何使用 vba 在 Excel 2007 中找到条件格式单元格的填充颜色值?

将 UILabel 添加到 CellForRow 中的 UIImageView

如何填充自定义单元格的 UIPickerView