单击单元格时,我想更改CollectionViewCell
的大小。如果单元格已经打开,则需要扩展或折叠。到目前为止,我正在使用didSelectItemAtIndexPath
方法中的以下代码进行此操作:
UICollectionViewCell *myCell = [collectionView cellForItemAtIndexPath:indexPath];
[UIView transitionWithView:collectionView duration:.3 options:UIViewAnimationOptionCurveLinear
animations:^{
CGRect oldFrame = myCell.frame;
if ([expandedCell isEqual:myCell]) {
expandedCell = nil;
oldFrame.size.height = 42;
}else{
expandedCell = myCell;
oldFrame.size.height = 220;
}
myCell.frame = oldFrame;
} completion:^(BOOL finished) {}];
当我扩展最后一个单元格时,它可以正常工作。它也崩溃了。但是,例如,当我单击索引为0的单元格时,单元格0的帧将在单元格1的帧下方。如何更改选定索引路径后所有单元格的帧?别忘了,我在更改所有单元格时都需要动画。
编辑:我发现我的问题的答案与接下来的几行代码。关键是您需要在动画中调用重新加载数据,以便在
sizeForItemAtIndexPath
中更改大小会被动画化。[self.collectionView performBatchUpdates:^{
[self.collectionView reloadData];
} completion:^(BOOL finished) {}];
最佳答案
您需要在集合视图高度委托中调整高度,并在didSelectItem
中重新加载该特定单元格