0

私のアプリには、いくつかの情報を表示する UICollectionViewCells がいくつかあります。

ユーザーがいずれかのボタンをタップすると、タップされたセルを次のコードで反転します。

UICollectionViewCell* cell = [collectionView cellForItemAtIndexPath:indexPath];

[UIView animateWithDuration:1.0
                      delay:0
                    options:(UIViewAnimationOptionAllowUserInteraction)
                 animations:^
                {
                     NSLog(@"starting animation");

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

セルが反転した後 (これは正しく行われます)、セルは完全に白くなります。

2 つの質問は次のとおりです。 - フリップ後にセルが白いのはなぜですか。fromView は toView と等しいので、元の情報を表示すべきではありませんか? - セルの背面にさまざまなコンテンツを表示する最良の方法は何ですか? UICollectionViewCell には cell.contentViewBack へのリンクがないと思います...

4

1 に答える 1

1

あなたは今これを持っているかもしれませんが、

これが「最善の」方法であるかどうかはわかりませんが、カスタム UICollectionViewCell を作成し、カスタム セルに 2 つの UIImageView を持ち、アニメーションでそれらのビューをターゲットにすることでこれを機能させました (これは、それだけの場合にのみ機能します)。あなたの細胞に入れたい - 役立つかもしれないし、そうでないかもしれない、誰でも)

新しいUICollectionViewCellクラスを作成します(私のものはCardCVCellと呼ばれます)UIImageViewアウトレットに入れられたCardCVCell.hで

@property (strong, nonatomic) IBOutlet UIImageView *cardImage;
@property (strong, nonatomic) IBOutlet UIImageView *cardBackImage;

ストーリーボードを使用しました - そこで、シーンのコレクション ビューのセルにカスタム クラスとして「CardCVCell」と入力しました。

そのシーンのView Controllerには上記のコードがありますが、トランジションのビューのカスタムセルでUIImageViewsを使用しています(UICollectionViewCellをカスタムクラスにキャストする必要があることに注意してください

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
// animate the cell user tapped on
CardCVCell  *cell = (CardCVCell *)[collectionView cellForItemAtIndexPath:indexPath];

         [UIView transitionFromView:cell.cardBackImage
                             toView:cell.cardImage
                           duration:.5
                            options:UIViewAnimationOptionTransitionFlipFromRight
                         completion:^(BOOL finished)
          {
              if (finished) {
                  NSLog(@"animation end");
              }

          }
    ];    
}

私が私に知らせるのを助けることができれば、これがあなたではないにしても誰かに役立つことを願っています.

乾杯

于 2013-01-30T15:09:46.617 に答える