2017-06-01 1 views
0

Actuellement, j'ai mon didselect pour développer chacune de mes cellules comme ceci:Comment développer UICollectionView cellule lorsque sélectionnée sans déconner la vue collection

@objc(collectionView:didSelectItemAtIndexPath:) func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    print("selected") 
    let cell = collectionView.cellForItem(at: indexPath) 

    UIView.animate(withDuration: 0.5, animations: ({ 


     cell?.frame = CGRect(x: 0, y: 0, width: 331, height: 320) 
     // cell?.superview?.bringSubview(toFront: cell!) 

     }), completion: nil) 

} 

La question que je suis en cours d'exécution en est les cellules commencent à se chevauchent au lieu de s'ajuster vers le bas à la grande taille de la cellule. Je veux être capable de cliquer sur n'importe quelle cellule, elle se dilate à une plus grande taille tandis que les autres cellules descendent pour expliquer ce redimensionnement. En cliquant sur une deuxième cellule, la première cellule serait plus petite. Comment vais-je faire cela? Ça a été un combat!

+0

pls halp ....... –

Répondre

0

Vous devez appeler pour reloadItems dans didSelected puis redimensionner pièce sizeForItemAtIndexPath:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { 

NSLog(@"when SELECTED"); 
__weak MainCollectionViewCell *cell = (MainCollectionViewCell*)[self.yourCollectionView cellForItemAtIndexPath:indexPath]; 

if (cell.isSelected) { 
    NSArray *indexes = [[NSArray alloc] init]; 
    [indexes arrayByAddingObject:indexPath]; 
    [self.yourCollectionView reloadItemsAtIndexPaths:indexes]; 
} 
} 

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

NSLog(@"size for Item called"); 

CGSize size = self.view.frame.size; 

__weak MainCollectionViewCell *cell = (MainCollectionViewCell*)[self.yourCollectionView cellForItemAtIndexPath:indexPath]; 

if (cell.isSelected) { 
    return CGSizeMake(size.width, size.height); 
} else { 
// return your original item size 
    return CGSizeMake(300, 300); 
} 
}