UICollectionView单元格确实选择了翻转动画,缺少View

时间:2014-11-12 05:34:13

标签: ios animation uicollectionview

didSelect方法上的UICollectionView单元格翻转动画应翻转单击索引单元格的详细信息,如果用户想要进入原始视图应该能够在单元格上查看。 我正在使用

 UICollectionViewCell* cell = [collectionView cellForItemAtIndexPath:indexPath];
    [UIView animateWithDuration:1.0
                          delay:0
                        options:(UIViewAnimationOptionAllowUserInteraction)
                     animations:^
     {

         [UIView transitionFromView:cell.contentView
                             toView:cell.contentView
                           duration:.5
                            options:UIViewAnimationOptionTransitionFlipFromRight
                         completion:nil];
     }
                     completion:^(BOOL finished)
     {

     }
     ];

1 个答案:

答案 0 :(得分:2)

在你的代码中,动画将你从视图中移除并显示到视图。因此,如果内容视图被删除,那么在集合中它将如何返回。 所以,不要删除视图,只需隐藏它。

请使用以下代码

CVCell* cell1 = (CVCell *)[collectionView cellForItemAtIndexPath:indexPath];
[UIView transitionWithView:cell1.contentView
                  duration:5
                   options:UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{

                    if (cell1.isred) {
                     cell1.isred = NO;
                        cell1.greenview.hidden = NO;
                        cell1.redView.hidden=YES;
                    } else {
                        cell1.isred = YES;
                        cell1.greenview.hidden = YES;
                        cell1.redView.hidden=NO;
                    }

                } completion:nil];

greenview是第一个视图,redview是第二个在单元格上添加的视图。 现在当fliped显示第一个绿色视图并且redview被隐藏并且下次反之亦然

您可以尝试其他动画

    CATransition *animation = [CATransition animation];
    animation.delegate = self;
    animation.duration = 2.6f;
    animation.timingFunction = UIViewAnimationCurveEaseInOut;
    animation.fillMode = kCAFillModeForwards;
    animation.startProgress = 0.1;
    animation.endProgress = 1.0;
    animation.removedOnCompletion = YES;
    animation.type = @"cube";//---
animation.subtype = (cell1.isred)?kCATransitionFromLeft:kCATransitionFromRight;
[CATransaction setCompletionBlock:^{
                    if (cell1.isred) {
                     cell1.isred = NO;
                        cell1.greenview.hidden = NO;
                        cell1.redView.hidden=YES;
                    } else {
                        cell1.isred = YES;
                        cell1.greenview.hidden = YES;
                        cell1.redView.hidden=NO;
                    }
}];

[cell1.contentView.layer addAnimation:animation forKey:@"Cameraanimation"];