我有一个 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;
}