使用动画更改UICollectionViewCell高度

时间:2014-10-27 10:02:58

标签: ios uicollectionview uicollectionviewcell uianimation

我想在点击单元格时更改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) {}];

1 个答案:

答案 0 :(得分:-1)

您需要在集合视图高度委托中调整高度,并在didSelectItem

中重新加载该特定单元格