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

时间:2015-03-13 08:42:25

标签: ios objective-c uicollectionview uicollectionviewcell

我有一个集合视图,我想添加一个图像,当选择一个项目时具有内在效果。

我做了这个,但当我滚动另一个项目具有相同的效果,我不想要。我怎么能改变这个?

- (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;

}

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为细胞被重复使用。在CollectionViewCell类中,您必须实现该方法:

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