1

我有一个 UICollectionView,它使用瀑布式布局来显示不同大小的单元格。每个单元格的高度计算工作得很好。

我遇到的问题是我必须更改每个单元格中两个插座(UIImage 和 UILabel)的大小,而且我不知道在哪里更改帧大小以防止 UICollectionView 为所述帧大小更改设置动画。我尝试在每个单元格的 layoutSubviews 方法和 cellForItemAtIndexPath 中进行,但没有结果。每次包含 UICollectionView 的视图控制器出现时,每个单元格中两个插座的帧变化都会被动画化。

为 cellForItemAtIndexPath 中的图像设置框架的示例:

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

CVCNewspaper *cell = (CVCNewspaper *)[collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER_NEWSPAPER forIndexPath:indexPath];
BONewspaper *newspaper = [newspapers objectAtIndex:indexPath.row];
CGFloat width = cell.frame.size.width;

// Calculate rect for imageView
CGFloat objectWidth = newspaper.coverNews.imageWidth ? newspaper.coverNews.imageWidth : 180;
CGFloat objectHeight = newspaper.coverNews.imageHeight ? newspaper.coverNews.imageHeight : 100;
CGFloat scaledHeight = floorf(objectHeight / (objectWidth / width));

cell.imageViewCover.frame = CGRectMake(MARGINVIEW, HEADERHEIGHT + 5, width, scaledHeight);

[cell fillCellWithNewspaper:newspaper];

return cell;

}

4

0 回答 0