在集合视图中选择项目时添加内部效果

Add inner effect when item selected in collection view

I have a collection view and i want to add an image , with inner effect when one item is selected .

我做了这个,但是当我滚动另一个项目时,它具有相同的效果,我不想要。我该如何更改?

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    CollectionViewCell *cellO =  [self.collection cellForItemAtIndexPath:celulaSelectata];

    if ([selectedIndexPath isEqual:indexPath]) {

        UIImage *inerImager =(UIView *)[cell viewWithTag:100];
        cellO.inner.hidden=YES;
        return CGSizeMake(100, 100);
    }
    else {
        cellO.inner.hidden=NO;
        return CGSizeMake(100, 100);
    }
}


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

    CollectionViewCell *cellOne =  [collectionView cellForItemAtIndexPath:indexPath];
    cellOne.inner.hidden=YES;
    recipeImageView = (UIImageView *)[cell viewWithTag:100];

    recipeImageView.frame=CGRectMake(recipeImageView.frame.origin.x, recipeImageView.frame.origin.y, 100, 100);
}


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

    if ([selectedIndexPath isEqual:indexPath]) {
       selectedIndexPath = nil;
        [self.player stop];

        CollectionViewCell *cellOne =  [collectionView cellForItemAtIndexPath:indexPath];
        cellOne.inner.hidden=YES;


        recipeImageView.frame=CGRectMake(recipeImageView.frame.origin.x, recipeImageView.frame.origin.y, 100, 100);
        recipeImageView.layer.borderColor = [[UIColor blackColor] CGColor];

    }
    else {
        celulaSelectata=indexPath;
        UICollectionViewCell  *cell = [collectionView cellForItemAtIndexPath:indexPath];
        CollectionViewCell *cellOne =  [collectionView cellForItemAtIndexPath:indexPath];

        recipeImageView.frame=CGRectMake(recipeImageView.frame.origin.x, recipeImageView.frame.origin.y, 100, 100);
        cellOne.inner.hidden=YES;

}

这是因为细胞被重复使用了。在您的 CollectionViewCell class 中,您必须实现以下方法:

-(void)prepareForReuse {
    [super prepareForReuse];
    //Clear the effect here.
}