我想在点击单元格时更改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) {}];
答案 0 :(得分:-1)
您需要在集合视图高度委托中调整高度,并在didSelectItem