我有一个包含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];
}
答案 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