调整未选定单元格UICollectionView的大小

时间:2017-11-08 08:25:05

标签: objective-c xcode uicollectionview uicollectionviewcell

我有一个包含9个可见项的UICollectionView。

当我选择一个单元格时,它的宽度和高度会发生变化,但不会更改未选中的所有其他单元格。

我需要在选择一个单元格时,所有其他未经检查的单元格需要消失或将其框架设置为ZERO。

同样在我的单元格内,我有一个按钮,将所选单元格返回到起始值,在这种情况下,所有其他单元格必须返回原始大小。

任何人都可以帮我理解这个吗?

这是我用来扩展所选单元格的代码

 @property (nonatomic, strong) NSIndexPath *selectedIndex;

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

        if  (self.selectedIndex== indexPath) {

            // CELL SELECTED CHANGE SIZE
            return CGSizeMake(collectionView.frame.size.width, collectionView.frame.size.height);
        } 

        // ORIGINAL SIZE 
        return CGSizeMake(collectionView.frame.size.width/3, collectionView.frame.size.height/3);

}

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    self.selectedIndex = indexPath;
    [collectionView performBatchUpdates:nil completion:nil];
}

1 个答案:

答案 0 :(得分:0)

这个怎么样

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    for (UICollectionViewCell* cell in collectionView.visibleCells) {
        if (cell.selected) {//leave only selected cell visible
            cell.hidden=NO;
        }
        else{
            cell.hidden=YES;
        }
    }
}

恢复取消选择的可见性

-(void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(nonnull NSIndexPath *)indexPath{
    for (UICollectionViewCell* cell in collectionView.visibleCells) {
        cell.hidden=NO;
    }
}

非常简单的方法,只是为了给你一个想法。

即。如果您的集合视图正在滚动,您可能会处理

中所选/未选定单元格的可见性
-(void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(nonnull UICollectionViewCell *)cell forItemAtIndexPath:(nonnull NSIndexPath *)indexPath

-(void)collectionView:(UICollectionView *)collectionView willDisplayCell:(nonnull UICollectionViewCell *)cell forItemAtIndexPath:(nonnull NSIndexPath *)indexPath